Este repositorio permite el uso de netcode.io a través de extensiones del navegador, antes de su adopción en los navegadores. netcode.io permite el uso seguro de UDP en navegadores web con el fin de admitir juegos HTML5 multijugador. Puede encontrar más información sobre netcode.io aquí.
netcode.io es compatible con los siguientes navegadores a través de extensiones:
La compatibilidad con dispositivos móviles es básicamente imposible hasta que la compatibilidad con netcode.io aparezca en los navegadores de forma nativa, ya que las plataformas móviles no admiten extensiones ni mensajería nativa.
Para que esto funcione, se requiere la instalación de una extensión del navegador y una aplicación auxiliar nativa que realice la comunicación netcode.io real. La extensión utiliza las API de mensajería nativas proporcionadas en los navegadores para que netcode.io esté disponible a través del asistente.
Para probar esto en su navegador, primero cree el asistente netcode.io.host:
go get github.com/wirepair/netcode
go build
- para el sistema operativo actualenv GOOS=windows GOARCH=amd64 go build
- para compilar para Windows (estilo Linux para configurar variables de entorno)env GOOS=linux GOARCH=amd64 go build
- para compilar para Linux (estilo Linux para configurar variables de entorno)env GOOS=darwin GOARCH=amd64 go build
- para compilar para Mac (estilo Linux para configurar variables de entorno) ./netcode.io.host
Esto debería ejecutarse sin errores e instalarse como una extensión de mensajería nativa.
Una vez hecho esto, agregue el directorio browserwebext
como una extensión descomprimida.
La API está disponible para los clientes de Javascript como window.netcode
. Puede comprobar la disponibilidad de netcode.io utilizando el patrón convencional if (window.netcode) { ... }
.
window.netcode
proporciona una función: createClient(callback)
:
Crea un nuevo cliente netcode.io que se puede utilizar para una comunicación UDP segura mediante el protocolo netcode.io. La devolución de llamada tiene el formato callback(err, client)
. Si se establece err
, hubo un error al crear el cliente (y client
será nulo). De lo contrario, se establece client
y err
es nulo. El cliente devuelto es una instancia de Client
.
protocol
debe ser ipv4
o ipv6
y determina a qué tipo de dirección de servidor puede conectarse.
Parámetros:
protocol
: Ya sea ipv4
o ipv6
.callback
: una devolución de llamada en el formato callback(err, client)
donde err
es null
o una instancia de Error
y client
es null
o una instancia de Client
. Comprueba si el usuario ha instalado el asistente netcode.io. La devolución de llamada tiene el formato callback(err, isPresent)
, donde err
es null
o una instancia de Error
. Si no hay ningún error, isPresent
es un valor booleano que indica si se ha instalado el asistente nativo.
Si el asistente netcode.io no se ha instalado, debe dirigir al usuario a https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest donde el asistente netcode.io se puede instalar fácilmente en un unos cuantos clics.
Parámetros:
callback
: una devolución de llamada en el formato callback(err, isPresent)
donde err
es null
o una instancia de Error
y isPresent
es null
o booleano. Establece la tasa de ticks del cliente netcode.io, expresada como el número de ticks por segundo para recibir y enviar paquetes. La tasa de ticks para los clientes es 60
por defecto; es decir, 60 veces por segundo.
Parámetros:
tickRate
: un número entero igual o mayor que 1
.callback
: una devolución de llamada en el formato callback(err)
donde err
es null
o una instancia de Error
. Se conecta a un servidor netcode.io utilizando el token especificado. El token
debe ser una instancia de Uint8Array
y representar un token netcode.io recibido de un servidor de autenticación.
No puede utilizar netcode.io para enviar paquetes UDP a direcciones IP arbitrarias; en su lugar, debe tener un servidor de autenticación que utilice la biblioteca netcode.io (o una implementación compatible) que pueda generar y firmar tokens con una lista de direcciones IP del servidor de juegos y una clave privada compartida entre su servidor de autenticación y los servidores de juegos.
En los escenarios más comunes, su servidor de autenticación proporcionará el token como parte de una solicitud AJAX. Si está utilizando un sistema de cuentas de usuario, proporcionará tokens después de que el usuario inicie sesión en su juego, y el token indicará a qué servidor está autorizado a conectarse el cliente.
Parámetros:
token
: una instancia Uint8Array
que contiene los datos del token.callback
: una devolución de llamada en el formato callback(err)
donde err
es null
o una instancia de Error
. Envía un paquete al servidor conectado con packetBuffer
como datos. packetBuffer
debe ser una instancia de Uint8Array
.
Parámetros:
token
: una instancia Uint8Array
que contiene los datos del paquete a enviar.callback
: una devolución de llamada en el formato callback(err)
donde err
es null
o una instancia de Error
. Devuelve el estado actual del cliente como una cadena. El estado devuelto es uno de: connected
, connectionDenied
, connectionRequestTimeout
, connectionResponseTimeout
, connectionTimedOut
, connectTokenExpired
, disconnected
, invalidConnectToken
, sendingConnectionRequest
, sendingConnectionResponse
o destroyed
.
Parámetros:
callback
: una devolución de llamada en el formato callback(err, state)
donde err
es null
o una instancia de Error
. state
es null
(en caso de error) o uno de los estados enumerados anteriormente.Destruye el cliente, lo desconecta del servidor y limpia los recursos asociados. Una vez que se destruye un cliente, no se puede reutilizar.
Parámetros:
callback
: una devolución de llamada en el formato callback(err)
donde err
es null
o una instancia de Error
. Agrega un detector de eventos al cliente. Actualmente, el único type
admitido es receive
, que se activa cuando el cliente recibe un paquete del servidor.
Para receive
la devolución de llamada tiene el formato callback(clientId, buffer)
donde clientId
es el identificador de cliente emitido originalmente por el servidor de autenticación y buffer
es el paquete recibido como una instancia de Uint8Array
.
Parámetros:
type
: uno de los tipos admitidos enumerados anteriormente.callback
: una devolución de llamada cuya forma difiere según type
. Este código de extensión de host se proporciona bajo la licencia MIT.
Los objetivos principales de este proyecto actualmente son:
Todas las solicitudes de extracción deben estar disponibles bajo una licencia del MIT.