仅用于传输的socket.io的轻量级替代品

是否有一个轻量级的替代socket.io运输只?

我有一个node.js应用程序使用socket.io只是作为一个消息传输。 我的应用程序是自行pipe理会话和消息路由,我只是使用socket.io传输 – websocket +无论默认的回退是旧版浏览器。

更新版本的socket.io似乎变得越来越重,现在支持redis,这完全不需要。

ws模块非常快(看基准testing ),经过了很好的testing,非常非常轻巧,但是没有必要自己回退,再加上它没有事件发射器。 但是,如果这是你想要的,只能在运输中出现。 如果你想要一个穷人的“会话”,只需要附加一些东西给ws对象,像这样:

var WebSocketServer = require('ws').Server var wss = new WebSocketServer( /* some config */); wss.on('connection', function(ws) { ws.on('message', function (message) { try { var obj = JSON.parse(message) // using JSON over the conversation } catch (err) { var obj = {}; console.log('probably not valid json'); } switch (true) { case obj.name !== undefined: ws.name = obj.name; // Here's the poor man's session variable ws.send('Hello '+ws.name); break; } }); }); 

现在唯一缺less的东西就是一个事件发射器。

还有其他的select。 fayehttp://faye.jcoglan.com/就是其中之一。 它类似于socket.io,但使用Bayeux协议。 另一个,如果你不想运行一个服务器 – pusherhttp://pusher.com/

看看sock.js – 它试图实现跨浏览器的websockets api,没有更多。

对于Node.js,你可以试试ws + ws-wrapper + ws-server-wrapper 。 ws-wrapper是一个轻量级的库,它为WebSockets添加了一些事件处理函数…类似于你可能在socket.io中find的。 另外,您还可以获得基于Promise的请求和命名空间。

正如其他人所说, ws模块非常快,重量轻,甚至被引擎盖下的socket.io使用。 所有现代浏览器现在都支持原生的WebSocket,所以支持大多数实时Web应用程序的其他传输似乎是愚蠢的。

ws-wrapper甚至不实现自动重新连接,所以如果你需要的话,可以看看这个wiki页面描述了一个指数后退的方法

最后,ws-server-wrapper是服务器端的库,允许你做这样的事情:向所有连接的WebSocket发送消息,侦听来自所有WebSocket的事件等。

免责声明:我是ws-wrapper的作者。 🙂