พื้นที่เก็บข้อมูลนี้ช่วยให้สามารถใช้ netcode.io ผ่านส่วนขยายของเบราว์เซอร์ ก่อนที่จะมีการนำไปใช้ในเบราว์เซอร์ netcode.io เปิดใช้งานการใช้ UDP อย่างปลอดภัยในเว็บเบราว์เซอร์เพื่อวัตถุประสงค์ในการรองรับเกม HTML5 ที่มีผู้เล่นหลายคน ข้อมูลเพิ่มเติมเกี่ยวกับ netcode.io สามารถพบได้ที่นี่
netcode.io รองรับเบราว์เซอร์ต่อไปนี้ผ่านส่วนขยาย:
โดยพื้นฐานแล้วการรองรับอุปกรณ์มือถือนั้นเป็นไปไม่ได้จนกว่าการรองรับ netcode.io จะปรากฏในเบราว์เซอร์ เนื่องจากแพลตฟอร์มมือถือไม่รองรับส่วนขยายหรือการส่งข้อความแบบเนทีฟ
เพื่อให้ทำงานได้ จำเป็นต้องติดตั้งทั้งส่วนขยายของเบราว์เซอร์และตัวช่วยแอปพลิเคชันแบบเนทีฟซึ่งดำเนินการสื่อสาร netcode.io จริง ส่วนขยายใช้ API การส่งข้อความดั้งเดิมที่มีให้ในเบราว์เซอร์เพื่อให้ netcode.io พร้อมใช้งานผ่านตัวช่วย
หากต้องการลองใช้เบราว์เซอร์ของคุณ ให้สร้างตัวช่วย netcode.io.host ก่อน:
go get github.com/wirepair/netcode
go build
- สำหรับระบบปฏิบัติการปัจจุบันenv GOOS=windows GOARCH=amd64 go build
- เพื่อสร้างสำหรับ Windows (สไตล์ linux เพื่อตั้งค่าตัวแปรสภาพแวดล้อม)env GOOS=linux GOARCH=amd64 go build
- เพื่อสร้างสำหรับ Linux (สไตล์ linux เพื่อตั้งค่าตัวแปรสภาพแวดล้อม)env GOOS=darwin GOARCH=amd64 go build
- เพื่อสร้างสำหรับ Mac (สไตล์ linux เพื่อตั้งค่าตัวแปรสภาพแวดล้อม) ./netcode.io.host
สิ่งนี้ควรทำงานโดยไม่มีข้อผิดพลาด และติดตั้งตัวเองเป็นส่วนขยายการส่งข้อความดั้งเดิม
หลังจากเสร็จสิ้น ให้เพิ่มไดเร็กทอรี browserwebext
เป็นส่วนขยายที่คลายแพ็กแล้ว
API ทำให้ไคลเอนต์ Javascript ใช้งานได้เป็น window.netcode
คุณสามารถตรวจสอบความพร้อมใช้งานของ netcode.io ได้โดยใช้รูปแบบ if (window.netcode) { ... }
ทั่วไป
window.netcode
มีหนึ่งฟังก์ชัน: createClient(callback)
:
สร้างไคลเอนต์ netcode.io ใหม่ซึ่งสามารถใช้สำหรับการสื่อสาร UDP ที่ปลอดภัยโดยใช้โปรโตคอล netcode.io การโทรกลับเป็นรูปแบบ callback(err, client)
หากตั้งค่า err
แสดงว่าเกิดข้อผิดพลาดในการสร้างไคลเอ็นต์ (และ client
จะเป็นโมฆะ) มิฉะนั้น client
จะถูกตั้งค่าและ err
เป็นโมฆะ ลูกค้าที่ส่งคืนเป็นตัวอย่างของ Client
protocol
ควรเป็น ipv4
หรือ ipv6
และกำหนดประเภทของที่อยู่เซิร์ฟเวอร์ที่คุณสามารถเชื่อมต่อได้
พารามิเตอร์:
protocol
: ipv4
หรือ ipv6
callback
: การโทรกลับในรูปแบบ callback(err, client)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
และ client
เป็น null
หรืออินสแตนซ์ของ Client
ตรวจสอบเพื่อดูว่าผู้ใช้ติดตั้งตัวช่วย netcode.io หรือไม่ การโทรกลับอยู่ในรูปแบบ callback(err, isPresent)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
หากไม่มีข้อผิดพลาด isPresent
จะเป็นบูลีนที่ระบุว่ามีการติดตั้ง Native Helper หรือไม่
หากไม่ได้ติดตั้งตัวช่วย netcode.io คุณควรนำผู้ใช้ไปที่ https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest ซึ่งสามารถติดตั้งตัวช่วย netcode.io ได้อย่างง่ายดายใน ไม่กี่คลิก
พารามิเตอร์:
callback
: การโทรกลับในรูปแบบ callback(err, isPresent)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
และ isPresent
เป็น null
หรือบูลีน ตั้งค่าอัตราเห็บของไคลเอ็นต์ netcode.io ซึ่งแสดงเป็นจำนวนเห็บต่อวินาทีสำหรับการรับและส่งแพ็กเก็ต อัตราติ๊กสำหรับลูกค้าเริ่มต้นที่ 60
; นั่นคือ 60 ครั้งต่อวินาที
พารามิเตอร์:
tickRate
: จำนวนเต็มที่เท่ากับหรือมากกว่า 1
callback
: การโทรกลับในรูปแบบ callback(err)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
เชื่อมต่อกับเซิร์ฟเวอร์ netcode.io โดยใช้โทเค็นที่ระบุ token
ควรเป็นอินสแตนซ์ของ Uint8Array
และแสดงถึงโทเค็น netcode.io ที่ได้รับจากเซิร์ฟเวอร์การตรวจสอบสิทธิ์
คุณไม่สามารถใช้ netcode.io เพื่อส่งแพ็กเก็ต UDP ไปยังที่อยู่ IP โดยพลการ คุณต้องมีเซิร์ฟเวอร์การตรวจสอบความถูกต้องที่ใช้ไลบรารี netcode.io (หรือการใช้งานที่เข้ากันได้) ซึ่งสามารถสร้างและลงนามโทเค็นด้วยรายการที่อยู่ IP ของเซิร์ฟเวอร์เกมและคีย์ส่วนตัวที่ใช้ร่วมกันระหว่างเซิร์ฟเวอร์การตรวจสอบความถูกต้องและเซิร์ฟเวอร์เกมของคุณ
ในสถานการณ์ทั่วไปส่วนใหญ่ เซิร์ฟเวอร์การตรวจสอบความถูกต้องของคุณจะจัดเตรียมโทเค็นให้เป็นส่วนหนึ่งของคำขอ AJAX หากคุณใช้ระบบบัญชีผู้ใช้ คุณจะมอบโทเค็นหลังจากที่ผู้ใช้เข้าสู่ระบบเกมของคุณ โดยโทเค็นจะระบุว่าเซิร์ฟเวอร์ใดที่ไคลเอนต์ได้รับอนุญาตให้เชื่อมต่อ
พารามิเตอร์:
token
: อินสแตนซ์ Uint8Array
ซึ่งมีข้อมูลโทเค็นcallback
: การโทรกลับในรูปแบบ callback(err)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
ส่งแพ็กเก็ตไปยังเซิร์ฟเวอร์ที่เชื่อมต่อโดยมี packetBuffer
เป็นข้อมูล packetBuffer
ควรเป็นอินสแตนซ์ของ Uint8Array
พารามิเตอร์:
token
: อินสแตนซ์ Uint8Array
ซึ่งมีข้อมูลแพ็กเก็ตที่จะส่งcallback
: การโทรกลับในรูปแบบ callback(err)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
ส่งกลับสถานะปัจจุบันของไคลเอนต์เป็นสตริง สถานะที่ส่งคืนคือสถานะใดสถานะหนึ่ง: connected
, connectionDenied
, connectionRequestTimeout
, connectionResponseTimeout
, connectionTimedOut
, connectTokenExpired
, disconnected
, invalidConnectToken
, sendingConnectionRequest
, sendingConnectionResponse
หรือ destroyed
พารามิเตอร์:
callback
: การโทรกลับในรูปแบบ callback(err, state)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
state
เป็น null
(ในกรณีที่เกิดข้อผิดพลาด) หรือสถานะใดสถานะหนึ่งที่ระบุไว้ข้างต้นทำลายไคลเอ็นต์ ตัดการเชื่อมต่อจากเซิร์ฟเวอร์ และล้างทรัพยากรที่เกี่ยวข้อง เมื่อลูกค้าถูกทำลายแล้ว จะไม่สามารถนำมาใช้ซ้ำได้
พารามิเตอร์:
callback
: การโทรกลับในรูปแบบ callback(err)
โดยที่ err
เป็น null
หรืออินสแตนซ์ของ Error
เพิ่มผู้ฟังเหตุการณ์ให้กับไคลเอ็นต์ ปัจจุบัน type
ที่รองรับเพียงประเภทเดียวคือ receive
ซึ่งเริ่มทำงานเมื่อไคลเอนต์ได้รับแพ็กเก็ตจากเซิร์ฟเวอร์
สำหรับ receive
การติดต่อกลับนั้นเป็นแบบฟอร์ม callback(clientId, buffer)
โดยที่ clientId
เป็นตัวระบุไคลเอนต์ที่ออกโดยเซิร์ฟเวอร์การตรวจสอบสิทธิ์และ buffer
เป็นแพ็กเก็ตที่ได้รับเป็นอินสแตนซ์ของ Uint8Array
พารามิเตอร์:
type
: หนึ่งในประเภทที่รองรับตามรายการด้านบนcallback
: การโทรกลับที่มีรูปแบบแตกต่างกันไปตาม type
รหัสส่วนขยายโฮสต์นี้มีให้ภายใต้ใบอนุญาต MIT
เป้าหมายหลักสำหรับโครงการนี้ในปัจจุบันคือ:
คำขอดึงทั้งหมดจะต้องจัดทำภายใต้ใบอนุญาต MIT