在瀏覽器採用 netcode.io 之前,此儲存庫允許透過瀏覽器擴充使用 netcode.io。 netcode.io 支援在 Web 瀏覽器中安全使用 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 以window.netcode
的形式提供給 Javascript 用戶端。您可以使用傳統的if (window.netcode) { ... }
模式檢查 netcode.io 的可用性。
window.netcode
提供了一個函數: createClient(callback)
:
建立一個新的 netcode.io 用戶端,可用於使用 netcode.io 協定進行安全 UDP 通訊。回呼的形式為callback(err, client)
。如果設定了err
,則建立客戶端時發生錯誤( client
將為空)。否則client
被設定且err
為 null。傳回的客戶端是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
是一個布林值,指示是否已安裝本機幫助程式。
如果尚未安裝 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 向任意 IP 位址發送 UDP 封包;相反,您必須擁有使用 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 許可證下可用。