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

voi*_*tor 11 websocket node.js socket.io

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

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

较新版本的socket.io似乎变得越来越重,现在配备了redis支持,我完全不需要.

Joã*_*imo 12

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;
        }
    });
});
Run Code Online (Sandbox Code Playgroud)

现在唯一缺少的就是它上面的事件发射器......


Fir*_*ero 5

还有其他选择.faye- http://faye.jcoglan.com/就是其中之一.它类似于socket.io但使用Bayeux协议.另一个如果您不想运行服务器pusher- http://pusher.com/.

  • 然后总是有 Ably 以及 https://www.ably.io,就像 Pusher,但重点是为具有协议互操作性和数据完整性的开发人员提供强大的发布/订阅流 API。__注意:我是联合创始人,但相信这仍然是一个有用的评论__ (2认同)

And*_*rov 5

看着 sock.js - 它试图实现跨浏览器的 websockets api,仅此而已。


BMi*_*ner 5

对于 Node.js,您可以尝试ws + ws-wrapper + ws-server-wrapper。ws-wrapper 是一个轻量级库,它向 WebSocket 添加了一些事件处理程序功能...类似于您在 socket.io 中可能找到的内容。此外,您还可以获得基于 Promise 的请求和命名空间。

正如其他人提到的,ws模块非常快、轻量级,甚至被 socket.io 在底层使用。现在所有现代浏览器都支持本机 WebSocket ,因此为大多数实时 Web 应用程序支持其他传输方式似乎很愚蠢。

ws-wrapper甚至没有实现自动重新连接,所以如果你想要的话,请查看这个描述指数退避方法的 wiki 页面

最后,ws-server-wrapper 是服务器端的库,允许您执行以下操作:向所有连接的 WebSocket 发送消息、侦听来自所有 WebSocket 的事件等。

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