Atualmente, existe uma infinidade de bibliotecas websocket para node.js, as mais populares parecem ser:
- https://github.com/Worlize/WebSocket-Node
- https://github.com/einaros/ws
- https://github.com/LearnBoost/engine.io
- https://github.com/learnboost/socket.io
- https://github.com/sockjs
No entanto, não consigo encontrar nenhuma comparação concreta sólida entre nenhum deles ... Aparentemente, o Socket.io foi incrível, mas tornou-se bastante antigo e apresenta falhas de compilação. Tanto o WS quanto o WebSocket afirmam que são os mais rápidos. E o engine.io parece novo, mas muito mais pesado que os mais leves.
Seria incrível se nós ou alguém pudéssemos reunir uma resposta que sirva de guia sobre qual biblioteca de soquetes usar e quando, bem como uma comparação entre eles.
Respostas:
Fazendo a bola rolar com esta resposta wiki da comunidade . Sinta-se livre para me editar com suas melhorias.
ws WebSocket servidor e cliente para Node.js. Uma das bibliotecas mais rápidas, se não a mais rápida.
servidor e cliente WebSocket -node WebSocket para node.js
websocket-driver-node Servidor WebSocket e analisador de protocolo do cliente node.js - usado no faye-websocket-node
servidor e cliente WebSocket faye-websocket-node para node.js - usado em faye e sockjs
servidor e cliente socket.io WebSocket para node.js + cliente para navegadores + (a v0 tem fallbacks mais recentes para os mais antigos, a v1 do Socket.io usa engine.io) + canais - usados no stack.io. A biblioteca do cliente tenta se reconectar após a desconexão.
servidor e cliente sockjs WebSocket para node.js e outros + cliente para navegadores + fallbacks mais novos para os mais antigos
fayeservidor e cliente WebSocket para node.js e outros + cliente para navegadores + fallbacks + suporte para outros idiomas do lado do servidor
deepstream.ioservidor em tempo real em deepstream.io que lida com conexões WebSockets e TCP e fornece sincronização de dados, publicação / assinatura e solicitação / resposta
socketclustercluster de servidor WebSocket que utiliza todos os núcleos da CPU em sua máquina. Por exemplo, se você usasse uma instância xlarge Amazon EC2 com 32 núcleos, seria capaz de lidar com quase 32 vezes o tráfego em uma única instância.
primus Fornece uma API comum para a maioria das bibliotecas acima para facilitar a comutação + melhorias de estabilidade para todas elas.
Quando usar:
use os servidores WebSocket básicos quando desejar usar as implementações nativas do WebSocket no lado do cliente, cuidado com o incompatibilidades do navegador
use as bibliotecas de fallback quando se importar com fallbacks do navegador
use as bibliotecas completas quando se interessar por canais
use primus quando você não tem idéia sobre o que usar, não está disposto a reescrever seu aplicativo quando precisar alternar estruturas devido a alterações nos requisitos do projeto ou precisar de estabilidade adicional da conexão.
Onde testar:
O Firecamp é um ambiente de teste de GUI para SocketIO, WS e todas as principais tecnologias em tempo real. Depure os eventos em tempo real enquanto você o desenvolve.
fonte
ws
.Atualização: esta resposta está desatualizada, pois versões mais recentes das bibliotecas mencionadas são lançadas desde então.
fonte
npm ws foi a resposta para mim. Achei menos invasivo e mais direto. Com isso, também foi trivial misturar websockets com serviços de descanso. Código simples compartilhado nesta postagem.
fonte
ws
, comows://myserver.com
. E sim, eles podem ser configurados para serem atendidos usando as portas 80 e 443 também. Usando um proxy reverso como o nginx, você pode rotear oWebSocket
URLs protocolo para outra porta a partir dos protocolos HTTP normais.express-ws
permite adicionarws
rotas no aplicativo expresso.