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/netcodego 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.