Este repositório permite o uso do netcode.io por meio de extensões de navegador, antes de sua adoção nos navegadores. netcode.io permite o uso seguro de UDP em navegadores da web com a finalidade de oferecer suporte a jogos HTML5 multijogador. Mais informações sobre netcode.io podem ser encontradas aqui.
netcode.io é compatível com os seguintes navegadores por meio de extensões:
O suporte a dispositivos móveis é basicamente impossível até que o suporte a netcode.io apareça nativamente nos navegadores, já que as plataformas móveis não suportam extensões ou mensagens nativas.
Para que isso funcione, é necessária a instalação de uma extensão de navegador e de um auxiliar de aplicativo nativo que realiza a comunicação real do netcode.io. A extensão usa APIs de mensagens nativas fornecidas em navegadores para disponibilizar netcode.io por meio do auxiliar.
Para testar isso em seu navegador, primeiro crie o auxiliar netcode.io.host:
go get github.com/wirepair/netcodego build - para o sistema operacional atualenv GOOS=windows GOARCH=amd64 go build - para compilar para Windows (estilo Linux para definir variáveis de ambiente)env GOOS=linux GOARCH=amd64 go build - para construir para Linux (estilo linux para definir variáveis de ambiente)env GOOS=darwin GOARCH=amd64 go build - para compilar para Mac (estilo Linux para definir variáveis de ambiente) ./netcode.io.host
Isso deve ser executado sem erros e instalado como uma extensão de mensagens nativa.
Depois de fazer isso, adicione o diretório browserwebext como uma extensão descompactada.
A API disponibilizada para clientes Javascript como window.netcode . Você pode verificar a disponibilidade do netcode.io usando o padrão convencional if (window.netcode) { ... } .
window.netcode fornece uma função: createClient(callback) :
Cria um novo cliente netcode.io que pode ser usado para comunicação UDP segura usando o protocolo netcode.io. O retorno de chamada tem o formato callback(err, client) . Se err for definido, ocorreu um erro ao criar o cliente (e client será nulo). Caso contrário, client será definido e err será nulo. O cliente retornado é uma instância de Client .
protocol deve ser ipv4 ou ipv6 e determina a qual tipo de endereço de servidor você pode se conectar.
Parâmetros:
protocol : ipv4 ou ipv6 .callback : um retorno de chamada no formato callback(err, client) onde err é null ou uma instância de Error e client é null ou uma instância de Client . Verifica se o auxiliar netcode.io foi instalado pelo usuário. O retorno de chamada tem o formato callback(err, isPresent) , onde err é null ou uma instância de Error . Se não houver erro, isPresent será um booleano que indica se o auxiliar nativo foi instalado.
Se o auxiliar netcode.io não tiver sido instalado, você deve direcionar o usuário para https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest onde o auxiliar netcode.io pode ser facilmente instalado em um alguns cliques.
Parâmetros:
callback : um retorno de chamada no formato callback(err, isPresent) onde err é null ou uma instância de Error e isPresent é null ou booleano. Define a taxa de ticks do cliente netcode.io, expressa como o número de ticks por segundo para recebimento e envio de pacotes. A taxa de ticks para clientes é padronizada como 60 ; isto é, 60 vezes por segundo.
Parâmetros:
tickRate : Um número inteiro igual ou maior que 1 .callback : um retorno de chamada no formato callback(err) onde err é null ou uma instância de Error . Conecta-se a um servidor netcode.io usando o token especificado. O token deve ser uma instância de Uint8Array e representar um token netcode.io recebido de um servidor de autenticação.
Você não pode usar netcode.io para enviar pacotes UDP para endereços IP arbitrários; em vez disso, você deve ter um servidor de autenticação que use a biblioteca netcode.io (ou uma implementação compatível) que possa gerar e assinar tokens com uma lista de endereços IP de servidores de jogos e uma chave privada compartilhada entre seu servidor de autenticação e os servidores de jogos.
Nos cenários mais comuns, o seu servidor de autenticação fornecerá o token como parte de uma solicitação AJAX. Se estiver usando um sistema de conta de usuário, você fornecerá tokens após o usuário fazer login no jogo, com o token indicando a qual servidor o cliente está autorizado a se conectar.
Parâmetros:
token : uma instância Uint8Array que contém os dados do token.callback : um retorno de chamada no formato callback(err) onde err é null ou uma instância de Error . Envia um pacote para o servidor conectado com packetBuffer como dados. packetBuffer deve ser uma instância de Uint8Array .
Parâmetros:
token : uma instância Uint8Array que contém os dados do pacote a serem enviados.callback : um retorno de chamada no formato callback(err) onde err é null ou uma instância de Error . Retorna o estado atual do cliente como uma string. O estado retornado é: connected , connectionDenied , connectionRequestTimeout , connectionResponseTimeout , connectionTimedOut , connectTokenExpired , disconnected , invalidConnectToken , sendingConnectionRequest , sendingConnectionResponse ou destroyed .
Parâmetros:
callback : um retorno de chamada no formato callback(err, state) onde err é null ou uma instância de Error . state é null (no caso de um erro) ou um dos estados listados acima.Destrói o cliente, desconectando-o do servidor e limpando todos os recursos associados. Depois que um cliente é destruído, ele não pode ser reutilizado.
Parâmetros:
callback : um retorno de chamada no formato callback(err) onde err é null ou uma instância de Error . Adiciona um ouvinte de eventos ao cliente. Atualmente o único type suportado é receive , que é acionado quando o cliente recebe um pacote do servidor.
Para receive o retorno de chamada tem o formato callback(clientId, buffer) onde clientId é o identificador do cliente emitido originalmente pelo servidor de autenticação e buffer é o pacote recebido como uma instância de Uint8Array .
Parâmetros:
type : um dos tipos suportados listados acima.callback : um retorno de chamada cuja forma difere com base no type . Este código de extensão de host é fornecido sob a licença do MIT.
Os principais objetivos deste projeto atualmente são:
Todas as solicitações pull devem ser disponibilizadas sob uma licença do MIT.