gwsocket é um servidor WebSocket simples, autônomo, independente de linguagem e compatível com RFC6455, escrito em C. Ele fica entre seu aplicativo e o navegador do cliente, proporcionando comunicação bidirecional rápida entre os dois com facilidade e flexibilidade. Mais informações em: https://gwsocket.io.
Muito simples, basta redirecionar a saída da sua aplicação (stdout) para stdin
ou para arquivo (chamado pipe) e deixar o gwsocket transferir os dados para o navegador - é isso.
Por exemplo, rastrear os logs do seu servidor no navegador não poderia ser mais fácil
# tail -f /var/log/nginx/access.log > /tmp/wspipein.fifo
OU
# tail -f /var/log/nginx/access.log | gwsocket
Você também pode inserir os dados do cliente (stdin) em seu aplicativo. Na verdade, você pode até enviar a saída do seu programa ncurses favorito para o navegador. Veja o screencast acima.
Eu precisava de um servidor WebSocket rápido , simples , sem dependências e sem bibliotecas , compatível com RFC6455 , escrito em C, que eu pudesse usar para a versão 1.0 do GoAccess simplesmente canalizando dados para dentro e para fora - WebSockets facilitados!
gwsocket é independente de linguagem, consulte a página de manual para obter mais detalhes e exemplos sobre como receber dados do navegador e como enviá-los para o navegador.
Instalar o gwsocket é muito fácil. Basta baixar, extrair e compilar com:
$ wget https://tar.gwsocket.io/gwsocket-0.4.tar.gz
$ tar -xzvf gwsocket-0.4.tar.gz
$ cd gwsocket-0.4/
$ ./configure
$ make
# make install
Não são necessárias dependências. Que bom, não é :), bem, quase, você precisa de gcc
, make
, etc.
$ git clone s://github.com/allinurl/gwsocket.git
$ cd gwsocket
$ autoreconf -fiv
$ ./configure
$ make
# make install
Para estabelecer um canal entre sua aplicação e o navegador do cliente, gwsocket fornece dois métodos que permitem ao usuário enviar e receber dados. A primeira é através do uso da entrada padrão (stdin) e da saída padrão (stdout). O segundo método é através de um cabeçalho de tamanho fixo seguido pela carga útil. Veja as opções abaixo para mais detalhes.
A entrada/saída padrão é a maneira mais simples de enviar/receber dados de/para um cliente. No entanto, está limitado à transmissão de mensagens para todos os clientes. Para enviar ou receber mensagens de um cliente específico, use o modo estrito na próxima seção. Veja exemplos específicos de idiomas aqui.
gwsocket implementa seu próprio protocolo minúsculo para envio/recebimento de dados. Em contraste com o modo stdin/stdout , o modo estrito permite enviar/receber dados de/para clientes conectados específicos, bem como acompanhar quem abriu/fechou uma conexão WebSocket. Também permite compactar e enviar quantos dados você desejar em uma única mensagem. Veja exemplos específicos de idiomas aqui.
As seguintes opções podem ser fornecidas na linha de comando.
Opção de linha de comando | Descrição |
---|---|
-p --port | Especifica a porta a ser vinculada. |
-h --help | Ajuda da linha de comando. |
-V --version | Exibir informações da versão e sair. |
--access-log=<path/file> | Especifica o caminho/arquivo para o log de acesso. |
--addr=<addr> | Especifica o endereço a ser vinculado. |
--echo-mode | Configure o servidor para ecoar todas as mensagens recebidas. |
--max-frame-size=<bytes> | Tamanho máximo de um quadro de websocket. |
--origin=<origin> | Certifique-se de que os clientes enviem o cabeçalho de origem especificado no handshake. |
--pipein=<path/file> | Cria um pipe nomeado (FIFO) que lê o caminho/arquivo fornecido. |
--pipeout=<path/file> | Cria um canal nomeado (FIFO) que grava no caminho/arquivo fornecido. |
--std | Habilite --stdin e --stdout . |
--stdin | Envie stdin para o websocket. |
--stdout | Envie os dados do websocket recebidos para stdout. |
--strict | Analise mensagens usando o modo estrito. Consulte a página de manual para obter mais detalhes. |
--ssl-cert=<cert.crt> | Caminho para o certificado SSL. |
--ssl-key=<priv.key> | Caminho para a chave privada SSL. |
--unix-socket=<addr> | Especifique o endereço do soquete do domínio UNIX ao qual vincular o servidor. |
epoll
e kqueue
Licenciado pelo MIT
Qualquer ajuda no gwsocket é bem-vinda. A maneira mais útil é experimentar e dar feedback. Sinta-se à vontade para usar o rastreador de problemas do Github e receber solicitações para discutir e enviar alterações de código.
Aproveitar!