Dieses Repository ermöglicht die Verwendung von netcode.io über Browsererweiterungen vor seiner Übernahme in Browsern. netcode.io ermöglicht die sichere Nutzung von UDP in Webbrowsern zur Unterstützung von Multiplayer-HTML5-Spielen. Weitere Informationen zu netcode.io finden Sie hier.
netcode.io wird in den folgenden Browsern über Erweiterungen unterstützt:
Die Unterstützung mobiler Geräte ist grundsätzlich unmöglich, bis die netcode.io-Unterstützung nativ in Browsern erscheint, da mobile Plattformen keine Erweiterungen oder natives Messaging unterstützen.
Damit dies funktioniert, ist die Installation sowohl einer Browser-Erweiterung als auch eines nativen Anwendungshilfsprogramms erforderlich, das die eigentliche netcode.io-Kommunikation durchführt. Die Erweiterung nutzt die in Browsern bereitgestellten nativen Messaging-APIs, um netcode.io über den Helfer verfügbar zu machen.
Um dies in Ihrem Browser auszuprobieren, erstellen Sie zunächst den Netcode.io.host-Helper:
go get github.com/wirepair/netcode
go build
– für das aktuelle Betriebssystemenv GOOS=windows GOARCH=amd64 go build
– zum Erstellen für Windows (Linux-Stil zum Festlegen von Umgebungsvariablen)env GOOS=linux GOARCH=amd64 go build
– zum Erstellen für Linux (Linux-Stil zum Festlegen von Umgebungsvariablen)env GOOS=darwin GOARCH=amd64 go build
– zum Erstellen für Mac (Linux-Stil zum Festlegen von Umgebungsvariablen) ./netcode.io.host
Dies sollte fehlerfrei laufen und sich als native Messaging-Erweiterung installieren.
Fügen Sie anschließend das Verzeichnis browserwebext
als entpackte Erweiterung hinzu.
Die API wird Javascript-Clients als window.netcode
zur Verfügung gestellt. Sie können die Verfügbarkeit von netcode.io mithilfe des herkömmlichen Musters if (window.netcode) { ... }
überprüfen.
window.netcode
bietet eine Funktion: createClient(callback)
:
Erstellt einen neuen netcode.io-Client, der für die sichere UDP-Kommunikation mithilfe des netcode.io-Protokolls verwendet werden kann. Der Rückruf hat die Form callback(err, client)
. Wenn err
festgelegt ist, ist beim Erstellen des Clients ein Fehler aufgetreten (und client
ist null). Andernfalls ist client
festgelegt und err
ist null. Der zurückgegebene Client ist eine Instanz von Client
.
protocol
sollte entweder ipv4
oder ipv6
sein und bestimmt, mit welcher Art von Serveradresse Sie eine Verbindung herstellen können.
Parameter:
protocol
: Entweder ipv4
oder ipv6
.callback
: Ein Callback in der Form callback(err, client)
wobei err
entweder null
oder eine Instanz von Error
ist und client
entweder null
oder eine Instanz von Client
ist. Überprüft, ob der netcode.io-Helfer vom Benutzer installiert wurde. Der Rückruf hat die Form callback(err, isPresent)
, wobei err
entweder null
oder eine Instanz von Error
ist. Wenn kein Fehler vorliegt, ist isPresent
ein boolescher Wert, der angibt, ob der native Helfer installiert wurde.
Wenn der netcode.io-Helfer nicht installiert wurde, sollten Sie den Benutzer zu https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest weiterleiten, wo der netcode.io-Helfer einfach in a installiert werden kann ein paar Klicks.
Parameter:
callback
: Ein Callback in der Form callback(err, isPresent)
wobei err
entweder null
oder eine Instanz von Error
ist und isPresent
entweder null
oder ein boolescher Wert ist. Legt die Tick-Rate des netcode.io-Clients fest, ausgedrückt als Anzahl der Ticks pro Sekunde zum Empfangen und Senden von Paketen. Die Tick-Rate für Kunden beträgt standardmäßig 60
; das heißt, 60 Mal pro Sekunde.
Parameter:
tickRate
: Eine Ganzzahl, die gleich oder größer als 1
ist.callback
: Ein Callback in der Form callback(err)
wobei err
entweder null
oder eine Instanz von Error
ist. Stellt mithilfe des angegebenen Tokens eine Verbindung zu einem Netcode.io-Server her. Das token
sollte eine Instanz von Uint8Array
sein und ein von einem Authentifizierungsserver empfangenes netcode.io-Token darstellen.
Sie können netcode.io nicht verwenden, um UDP-Pakete an beliebige IP-Adressen zu senden; Stattdessen benötigen Sie einen Authentifizierungsserver, der die netcode.io-Bibliothek (oder eine kompatible Implementierung) verwendet, die Token mit einer Liste von IP-Adressen des Spieleservers und einem privaten Schlüssel generieren und signieren kann, der von Ihrem Authentifizierungsserver und den Spieleservern gemeinsam genutzt wird.
In den meisten Fällen stellt Ihr Authentifizierungsserver das Token als Teil einer AJAX-Anfrage bereit. Wenn Sie ein Benutzerkontosystem verwenden, stellen Sie Token bereit, nachdem sich der Benutzer bei Ihrem Spiel angemeldet hat. Das Token gibt an, zu welchem Server der Client eine Verbindung herstellen darf.
Parameter:
token
: Eine Uint8Array
Instanz, die die Token-Daten enthält.callback
: Ein Callback in der Form callback(err)
wobei err
entweder null
oder eine Instanz von Error
ist. Sendet ein Paket mit packetBuffer
als Daten an den verbundenen Server. packetBuffer
sollte eine Instanz von Uint8Array
sein.
Parameter:
token
: Eine Uint8Array
-Instanz, die die zu sendenden Paketdaten enthält.callback
: Ein Callback in der Form callback(err)
wobei err
entweder null
oder eine Instanz von Error
ist. Gibt den aktuellen Status des Clients als Zeichenfolge zurück. Der zurückgegebene Status ist einer von: connected
, connectionDenied
, connectionRequestTimeout
, connectionResponseTimeout
, connectionTimedOut
, connectTokenExpired
, disconnected
, invalidConnectToken
, sendingConnectionRequest
, sendingConnectionResponse
oder destroyed
.
Parameter:
callback
: Ein Callback in der Form callback(err, state)
wobei err
entweder null
oder eine Instanz von Error
ist. state
ist entweder null
(im Fehlerfall) oder einer der oben aufgeführten Zustände.Zerstört den Client, trennt ihn vom Server und bereinigt alle zugehörigen Ressourcen. Sobald ein Client zerstört ist, kann er nicht wiederverwendet werden.
Parameter:
callback
: Ein Callback in der Form callback(err)
wobei err
entweder null
oder eine Instanz von Error
ist. Fügt dem Client einen Ereignis-Listener hinzu. Derzeit wird nur der type
receive
unterstützt, der ausgelöst wird, wenn der Client ein Paket vom Server empfängt.
Für receive
hat der Rückruf die Form callback(clientId, buffer)
wobei clientId
die ursprünglich vom Authentifizierungsserver ausgegebene Client-ID und buffer
das empfangene Paket als Instanz von Uint8Array
ist.
Parameter:
type
: Einer der oben aufgeführten unterstützten Typen.callback
: Ein Rückruf, dessen Form sich je nach type
unterscheidet. Dieser Host-Erweiterungscode wird unter der MIT-Lizenz bereitgestellt.
Die Hauptziele dieses Projekts sind derzeit:
Alle Pull-Requests müssen unter einer MIT-Lizenz zur Verfügung gestellt werden.