有没有轻量级的替代品可以用于仅传输?
我有一个使用node.js编写的应用程序,仅将socket.io用作消息传输。我的应用程序自己管理会话和消息路由,我只是在使用socket.io进行传输--使用websocket+旧版浏览器的默认回退。
新版本的socket.io似乎越来越沉重,现在还带有redis支持,但我完全不需要。
有没有轻量级的替代品可以用于仅传输?
我有一个使用node.js编写的应用程序,仅将socket.io用作消息传输。我的应用程序自己管理会话和消息路由,我只是在使用socket.io进行传输--使用websocket+旧版浏览器的默认回退。
新版本的socket.io似乎越来越沉重,现在还带有redis支持,但我完全不需要。
ws模块非常快(看看基准测试),经过充分测试,非常轻量级,但是如果没有它,你必须自己做回退,并且在其上方没有事件发射器。但是,如果您只想进行传输,它非常出色。如果您想要一个“穷人版”的“会话”,只需将某些内容附加到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;
}
});
});
现在唯一缺少的就是在其上加入事件发射器...
还有其他替代方案。 faye
- http://faye.jcoglan.com/ 是其中之一。它类似于socket.io,但使用Bayeux
协议。如果你不想运行服务器,还有另一个选择-pusher
-http://pusher.com/。
ws-wrapper
甚至没有实现自动重连,因此如果您需要这个功能,请查看描述指数回退方法的wiki页面。