Ce référentiel permet l'utilisation de netcode.io via des extensions de navigateur, avant son adoption dans les navigateurs. netcode.io permet l'utilisation sécurisée d'UDP dans les navigateurs Web dans le but de prendre en charge les jeux HTML5 multijoueurs. Plus d’informations sur netcode.io peuvent être trouvées ici.
netcode.io est pris en charge dans les navigateurs suivants via des extensions :
La prise en charge des appareils mobiles est fondamentalement impossible jusqu'à ce que la prise en charge de netcode.io apparaisse nativement dans les navigateurs, car les plates-formes mobiles ne prennent pas en charge les extensions ou la messagerie native.
Pour que cela fonctionne, cela nécessite l'installation à la fois d'une extension de navigateur et d'une application d'assistance native qui effectue la communication netcode.io proprement dite. L'extension utilise les API de messagerie natives fournies dans les navigateurs afin de rendre netcode.io disponible via l'assistant.
Pour essayer cela dans votre navigateur, créez d'abord l'assistant netcode.io.host :
go get github.com/wirepair/netcode
go build
- pour le système d'exploitation actuelenv GOOS=windows GOARCH=amd64 go build
- pour construire pour Windows (style Linux pour définir les variables d'environnement)env GOOS=linux GOARCH=amd64 go build
- pour construire pour Linux (style Linux pour définir les variables d'environnement)env GOOS=darwin GOARCH=amd64 go build
- pour construire pour Mac (style Linux pour définir les variables d'environnement) ./netcode.io.host
Cela devrait fonctionner sans erreur et s'installer en tant qu'extension de messagerie native.
Une fois cela fait, ajoutez le répertoire browserwebext
en tant qu'extension décompressée.
L'API mise à la disposition des clients Javascript sous le nom window.netcode
. Vous pouvez vérifier la disponibilité de netcode.io en utilisant le modèle conventionnel if (window.netcode) { ... }
.
window.netcode
fournit une fonction : createClient(callback)
:
Crée un nouveau client netcode.io qui peut être utilisé pour une communication UDP sécurisée à l'aide du protocole netcode.io. Le rappel est de la forme callback(err, client)
. Si err
est défini, une erreur s'est produite lors de la création du client (et client
sera nul). Sinon, client
est défini et err
est nulle. Le client renvoyé est une instance de Client
.
protocol
doit être ipv4
ou ipv6
et détermine le type d'adresse de serveur auquel vous pouvez vous connecter.
Paramètres :
protocol
: Soit ipv4
, soit ipv6
.callback
: Un rappel sous la forme callback(err, client)
où err
est soit null
ou une instance de Error
, et client
est soit null
ou une instance de Client
. Vérifie si l'assistant netcode.io a été installé par l'utilisateur. Le rappel est de la forme callback(err, isPresent)
, où err
est soit null
, soit une instance de Error
. S'il n'y a pas d'erreur, isPresent
est un booléen indiquant si l'assistant natif a été installé.
Si l'assistant netcode.io n'a pas été installé, vous devez diriger l'utilisateur vers https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest où l'assistant netcode.io peut être facilement installé dans un quelques clics.
Paramètres :
callback
: Un rappel sous la forme callback(err, isPresent)
où err
est soit null
, soit une instance de Error
, et isPresent
est soit null
, soit un booléen. Définit le taux de ticks du client netcode.io, exprimé en nombre de ticks par seconde pour la réception et l'envoi de paquets. Le taux de tick pour les clients est par défaut de 60
; c'est-à-dire 60 fois par seconde.
Paramètres :
tickRate
: Un entier égal ou supérieur à 1
.callback
: Un rappel sous la forme callback(err)
où err
est soit null
, soit une instance de Error
. Se connecte à un serveur netcode.io à l'aide du jeton spécifié. Le token
doit être une instance de Uint8Array
et représenter un jeton netcode.io reçu d'un serveur d'authentification.
Vous ne pouvez pas utiliser netcode.io pour envoyer des paquets UDP à des adresses IP arbitraires ; à la place, vous devez disposer d'un serveur d'authentification qui utilise la bibliothèque netcode.io (ou une implémentation compatible) qui peut générer et signer des jetons avec une liste d'adresses IP de serveur de jeu et une clé privée partagée entre votre serveur d'authentification et les serveurs de jeu.
Dans les scénarios les plus courants, votre serveur d'authentification fournira le jeton dans le cadre d'une requête AJAX. Si vous utilisez un système de compte utilisateur, vous fournirez des jetons une fois que l'utilisateur se connectera à votre jeu, le jeton indiquant à quel serveur le client est autorisé à se connecter.
Paramètres :
token
: Une instance Uint8Array
qui contient les données du jeton.callback
: Un rappel sous la forme callback(err)
où err
est soit null
, soit une instance de Error
. Envoie un paquet au serveur connecté avec packetBuffer
comme données. packetBuffer
doit être une instance de Uint8Array
.
Paramètres :
token
: Une instance Uint8Array
qui contient les données du paquet à envoyer.callback
: Un rappel sous la forme callback(err)
où err
est soit null
, soit une instance de Error
. Renvoie l'état actuel du client sous forme de chaîne. L'état renvoyé est l'un des suivants : connected
, connectionDenied
, connectionRequestTimeout
, connectionResponseTimeout
, connectionTimedOut
, connectTokenExpired
, disconnected
, invalidConnectToken
, sendingConnectionRequest
, sendingConnectionResponse
ou destroyed
.
Paramètres :
callback
: Un rappel sous la forme callback(err, state)
où err
est soit null
, soit une instance de Error
. state
est soit null
(en cas d'erreur), soit l'un des états répertoriés ci-dessus.Détruit le client, le déconnecte du serveur et nettoie toutes les ressources associées. Une fois qu'un client est détruit, il ne peut plus être réutilisé.
Paramètres :
callback
: Un rappel sous la forme callback(err)
où err
est soit null
, soit une instance de Error
. Ajoute un écouteur d'événement au client. Actuellement, le seul type
pris en charge est receive
, qui est déclenché lorsque le client reçoit un paquet du serveur.
Pour receive
le rappel est de la forme callback(clientId, buffer)
où clientId
est l'identifiant client émis à l'origine par le serveur d'authentification et buffer
est le paquet reçu en tant qu'instance de Uint8Array
.
Paramètres :
type
: un des types pris en charge répertoriés ci-dessus.callback
: Un rappel dont la forme diffère en fonction type
. Ce code d'extension hôte est fourni sous la licence MIT.
Les principaux objectifs de ce projet sont actuellement les suivants :
Toutes les demandes d'extraction doivent être mises à disposition sous une licence MIT.