Que Biblioteca websocket usar com o nó.js? [fechado]
actualmente existe uma pletora de bibliotecas websocket para o nó.js, o mais popular parece ser:
No entanto, não consigo encontrar comparações concretas sólidas entre nenhuma delas... Aparentemente Socket.io foi impressionante, mas tornou-se bastante antiquado e tem falhas de construção. Ambos WS e websocket-node afirmam que eles são os mais rápidos. E engine.io parece novo, mas muito mais pesado do que os aletarntivos mais leves. Seria incrível se nós ou alguém pudéssemos reunir uma resposta que servisse de guia sobre qual biblioteca de socket usar e quando, bem como uma comparação entre eles.3 answers
Ws Servidor webocket e cliente para o nó.js. Uma das bibliotecas mais rápidas, se não a mais rápida.
Websocket-node Servidor webocket e cliente para o nó.js
Websocket-driver-node WebSocket server and client protocol parser node.js-utilizado em Faye-websocket-nó
Faye-websocket-node WebSocket server e client for node.js-utilizado em faye e sockjs
Socket.io Servidor webocket e cliente para o nó.cliente JS + para Navegadores + (o v0 tem os mais recentes recuos mais antigos, v1 de Socket.io utilizações engine.io) + canais-utilizados em stack.io. Client library tenta se reconectar após a desconexão.
Sockjs Servidor webocket e cliente para o nó.JS e outros + cliente para navegadores + mais recentes para os mais antigos fallbacks
Faye servidor WebSocket e cliente para o nó.JS and others + client for browsers + fallbacks + support for other server-side languages
Deepstream.io servidor em tempo real que lida com WebSockets e ligações TCP e fornece sincronização de dados, pub / sub e requisição / resposta
Socket Cluster servidor WebSocket que faz uso de todos os núcleos de CPU na sua máquina. Por exemplo, se você usasse uma instância Xlarge Amazon EC2 com 32 núcleos, você 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 melhorias fáceis de switching + estabilidade para todos eles.
Quando utilizar:
Use os servidores WebSocket básicos quando quiser usar as implementações WebSocket nativas no lado do cliente, tenha cuidado com a incapacidade do navegador
Use as bibliotecas de fallback quando se preocupa com os fallbacks do navegador
Use as bibliotecas completas quando se preocupa com os canais
Use o primus quando você não tem idéia sobre o que usar, não estão com disposição para reescrever sua aplicação quando você precisa mudar de frameworks por causa de mudar os requisitos do projeto ou precisa de estabilidade de conexão adicional.
O Firecamp é um ambiente de testes GUI para o SocketIO, WS e toda a maior tecnologia em tempo real. Depurar os eventos em tempo real enquanto o está a desenvolver.
Actualização: esta resposta está desactualizada à medida que as versões mais recentes das bibliotecas mencionadas são lançadas desde então.
Socket.IO v0. 9 está desatualizado e um pouco buggy, e Engine.IO é a sucessor interino. Socket.IO v1. 0 (que será lançado em breve) irá utilização Engine.IO e ser muito melhor que v0.9. Eu recomendaria que usasses Engine.IO até Socket.IO v1. 0 é lançado.
O " ws " não suporta o recurso, por isso se o navegador do cliente não suporte websockets, não irá trabalho, ao contrário Socket.IO e Engine.IO que utiliza sondagens longas, etc, Se não estiverem disponíveis websockets. Entanto, "ws" parece ser a biblioteca mais rápida do momento.
Veja o meu artigo comparando Socket.IO, Engine.IO e Primus: https://medium.com/p/b63bfca0539
var WebSocketServer = require("ws").Server;
var http = require("http");
var express = require("express");
var port = process.env.PORT || 5000;
var app = express();
app.use(express.static(__dirname+ "/../"));
app.get('/someGetRequest', function(req, res, next) {
console.log('receiving get request');
});
app.post('/somePostRequest', function(req, res, next) {
console.log('receiving post request');
});
app.listen(80); //port 80 need to run as root
console.log("app listening on %d ", 80);
var server = http.createServer(app);
server.listen(port);
console.log("http server listening on %d", port);
var userId;
var wss = new WebSocketServer({server: server});
wss.on("connection", function (ws) {
console.info("websocket connection open");
var timestamp = new Date().getTime();
userId = timestamp;
ws.send(JSON.stringify({msgType:"onOpenConnection", msg:{connectionId:timestamp}}));
ws.on("message", function (data, flags) {
console.log("websocket received a message");
var clientMsg = data;
ws.send(JSON.stringify({msg:{connectionId:userId}}));
});
ws.on("close", function () {
console.log("websocket connection close");
});
});
console.log("websocket server created");