目前有一种WebSocket的库多如牛毛的node.js的,最流行的似乎是:
- 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
但是我无法找到任何他们之间的任何坚实的混凝土比较......显然Socket.io是真棒,但已相当陈旧,很多失败的基础之上。 Ws和WebSocket的节点要求他们是最快的。 而engine.io似乎新的,但比轻aletarntives更重了很多。
这将是惊人的,如果我们还是有人可以放在一起,是作为其socket库的指导使用和时,以及它们之间的比较的答案。
让球与此滚动社区维基答案。 随意编辑我用你的改进。
WS的WebSocket服务器和客户端的node.js中 其中最快库如果不是最快的国家之一。
WebSocket的节点的WebSocket服务器和客户端的node.js
WebSocket的驱动器节点的WebSocket服务器和客户端协议解析器的node.js -在菲-WebSocket的节点使用
费伊-WebSocket的节点的WebSocket服务器和客户机为的node.js -在菲和sockjs使用
socket.io的WebSocket服务器和客户机为的node.js +客户端-浏览器+(V0已经最新到最旧回退,Socket.io的V1使用engine.io)+通道-在stack.io使用。 客户端库尝试断开时重新连接。
sockjs的WebSocket服务器和客户端的node.js和其他+客户端浏览器+最新到最旧回退
王菲的WebSocket服务器和客户端的node.js和其他+客户端浏览器+后备+其他服务器端语言支持
deepstream.io一个处理的WebSockets&TCP连接,并提供数据同步,发布/订阅和请求/响应可群集实时服务器
socketcluster的WebSocket服务器集群,这使得利用所有的CPU内核的机器上。 例如,如果你使用的XLARGE Amazon EC2实例具有32个内核,你将能够处理在单个实例上近32倍的流量。
PRIMUS提供用于最上面的库的,便于开关+稳定性改进为所有这些的共同API。
何时使用:
当测试:
Firecamp是SocketIO,WS和所有主要的实时技术的GUI测试环境。 调试实时事件当你正在开发它。
更新:这个答案是过时所提到的库的更新版本,此后推出的。
Socket.IO V0.9已经过时,而且有点马车,而Engine.IO是临时继任者。 Socket.IO V1.0(这将很快被释放)将使用Engine.IO和比V0.9要好得多。 我建议你使用Engine.IO直到Socket.IO V1.0被释放。
“WS”不回退支持,因此,如果客户端浏览器不支持WebSockets的,它不会工作,不像Socket.IO和Engine.IO它采用长轮询等,如果WebSockets的不可用。 然而,“WS”似乎是目前最快的库。
请参阅我的文章比较Socket.IO,Engine.IO和博智: https://medium.com/p/b63bfca0539
NPM WS是我的答案。 我发现它较少干扰,更直接。 有了它也是微不足道的休息服务混合的WebSockets。 分享这篇文章上的简单的代码。
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");