首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与Node.js一起使用哪个websocket库?

与Node.js一起使用哪个websocket库?
EN

Stack Overflow用户
提问于 2013-05-06 05:06:28
回答 3查看 243.7K关注 0票数 449

目前有一个过多的websocket库 for node.js,最流行的似乎是:

不过,我找不到他们之间任何一个具体的比较.显然,Socket.io很棒,但是它已经过时了,并且有失败的构建。ws和websocket节点都声称它们是最快的。engine.io似乎是新的,但比较轻的产品要重得多。

如果我们或某个人能把一个答案放在一起,作为使用哪一个套接字库和何时使用的指南,以及它们之间的比较,那就太棒了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-06 06:20:40

用这个社区维基的答案让球滚起来。可以随意使用编辑我和您的改进。

  • ws WebSocket服务器和node.js客户端。如果不是最快的,也是最快的库之一。
  • websocket-节点 WebSocket服务器和node.js客户端
  • websocket驱动程序节点 WebSocket服务器和客户端协议解析器node.js -用于faye-websocket-节点
  • faye-websocket节点 WebSocket服务器和node.js客户端-用于faye和sockjs
  • socket.io WebSocket服务器和node.js + client用于浏览器+的客户机(v0有最新的、最古老的备份,v1 of Socket.io使用engine.io) +通道--用于stack.io。客户端库试图在断开连接时重新连接。
  • 套接字 WebSocket服务器和node.js客户端和其他服务器+浏览器客户端+最新到最老的备份
  • 费伊 WebSocket服务器和node.js客户端和其他服务器端+浏览器客户端+后台+支持其他服务器端语言
  • deepstream.io集群实时服务器,它处理WebSockets和TCP连接并提供数据同步、发布/订阅和请求/响应。
  • 插座簇 WebSocket服务器集群,它使用计算机上的所有CPU核心。例如,如果要使用具有32个核心的xlarge EC2实例,则可以在单个实例上处理几乎32倍的流量。
  • 普里默斯为上面的大多数库提供了一个通用的API,以便为所有库提供方便的切换和稳定性改进。

何时使用:

  • 当您想在客户端使用本机WebSocket实现时,请使用基本WebSocket服务器,注意浏览器不兼容
  • 当您关心浏览器回退时使用回退库
  • 当您关心频道时,使用功能齐全的库。
  • 当您不知道该使用什么时,请使用primus,当您由于更改项目需求或需要额外的连接稳定性而需要切换框架时,没有心情重写应用程序。

测试地点:

菲雷坎普是一个用于SocketIO、WS和所有主要实时技术的GUI测试环境.在开发时调试实时事件。

票数 410
EN

Stack Overflow用户

发布于 2014-01-09 12:21:36

更新:这个答案已经过时了,因为更新版本的库从那时起就被发布了。

Socket.IO v0.9已经过时,而且有点问题,而Engine.IO是临时的接班人。Socket.IO v1.0 (即将发布)将使用Engine.IO,比v0.9要好得多。我建议您在发布Engine.IO v1.0之前使用Socket.IO。 "ws“不支持回退,因此如果客户端浏览器不支持websockets,它将无法工作,不像Socket.IO和Engine.IO,后者在websockets不可用时使用长轮询等。然而,"ws“似乎是目前最快的库。 参见我的文章:比较Socket.IO、Engine.IO和Primus:https://medium.com/p/b63bfca0539

票数 41
EN

Stack Overflow用户

发布于 2014-10-01 08:10:11

npm是我的答案。我发现它不那么有侵扰性,更直截了当。同时,将websockets与rest服务混为一谈也很简单。在这个帖子上共享简单代码。

代码语言:javascript
运行
复制
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");
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16392260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档