AVISO: Este é o código da versão alfa e não deve ser usado para produção.
Uma biblioteca de extensão para Haxe para simplificar a configuração de conexões cliente/servidor. Possui suporte para o seguinte:
Existem duas camadas de transporte suportadas, TCP e UDP, que o hxnet usa. O TCP é comumente usado para serviços confiáveis como HTTP, FTP, Telnet e muitos outros. O UDP não tem conexão e é usado para dados rápidos e não confiáveis, úteis para jogos.
No topo das camadas de transporte estão as classes Cliente e Servidor. Eles lidam com conexões simples, transmissão/recuperação de dados e exceções. As classes UDP falsificam uma conexão com base em dados recebidos de diferentes endereços IP e um valor de tempo limite para determinar quando uma conexão é interrompida.
Ao criar um objeto Cliente ou Servidor você precisa passar um Protocolo para ele. Um protocolo define as interações específicas entre um cliente e um servidor. Por exemplo, você pode criar um protocolo personalizado baseado em RPC que chama facilmente funções no servidor de um cliente (ou vice-versa). Outro exemplo de protocolo seria o HTTP, que poderia gerar uma resposta do servidor para um navegador.
Digamos que você queira criar um servidor de eco telnet básico. Podemos fazer isso estendendo o protocolo Telnet e substituindo a função lineReceived
.
class Echo extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
writeLine ( line );
}
static public function main ()
{
var server = new hxnet.tcp. Server ( new hxnet.base. Factory ( Echo ), 4000 );
server . start ();
}
}
A função principal cria uma instância de um servidor TCP (porta 4000) e usa a classe base Factory para criar uma nova instância do Echo para cada conexão do cliente. Em seguida, ele chama start
, que é um atalho para escutar uma porta e atualizar infinitamente.
Você pode querer se conectar a um servidor para recuperar dados. Por padrão, o hxnet bloqueia todas as conexões, o que pode ser um problema com aplicativos GUI, pois bloqueará a renderização. Podemos consertar isso definindo blocking
como falso.
class Client extends hxnet.protocols. Telnet
{
override private function lineReceived ( line : String )
{
trace ( line );
}
static public function main ()
{
var client = new hxnet.tcp. Client ();
client . protocol = new Client (); // set the protocol we want to use
client . connect ( " localhost " , 4000 );
client . blocking = false ; // important for gui clients
while ( true )
{
client . update ();
// add application logic here
}
}
}
Direitos autorais (C) 2013-2014 Matt Tuttle
É concedida permissão, gratuitamente, a qualquer pessoa que obtenha uma cópia deste software e dos arquivos de documentação associados (o "Software"), para negociar o Software sem restrições, incluindo, sem limitação, os direitos de usar, copiar, modificar, mesclar , publicar, distribuir, sublicenciar e/ou vender cópias do Software e permitir que as pessoas a quem o Software seja fornecido o façam, sujeito às seguintes condições:
O aviso de direitos autorais acima e este aviso de permissão serão incluídos em todas as cópias ou partes substanciais do Software.
O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E NÃO VIOLAÇÃO. EM HIPÓTESE ALGUMA OS AUTORES OU DETENTORES DE DIREITOS AUTORAIS SERÃO RESPONSÁVEIS POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO DE CONTRATO, ATO ILÍCITO OU DE OUTRA FORMA, DECORRENTE DE, OU EM CONEXÃO COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.