【问题标题】:Node + Connect + WebSockets节点 + 连接 + WebSockets
【发布时间】:2012-11-28 00:31:44
【问题描述】:

我正在为 connect 寻找 WebSockets 库/中间件

目前我找到的是Socket.IO-connect,但它使用的是Connect的补丁版本。

这是一个问题,主要是因为 Connect 的修补版本与主分支分离。

你能推荐一个好的图书馆吗?

【问题讨论】:

    标签: node.js websocket


    【解决方案1】:

    现在,对于 WebSockets 来说是一个糟糕的时机,Mozilla 和 Opera 不会将它们与即将发布的版本一起提供,因为协议存在一些问题和代理损坏,这会导致缓存中毒。在协议修复之前,Google 很可能也会放弃支持。

    所以到目前为止,搜索中间件没有多大意义,因为协议很快就会改变,然后你必须再次搜索,所以现在你可以使用补丁版本如果你真的需要。

    详情见:
    http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/
    http://blog.pusherapp.com/2010/12/9/it-s-not-websockets-it-s-your-broken-proxy

    【讨论】:

    • 现在对于 WebSockets 来说不是一个糟糕的时期,当然对于 Socket.IO 来说也不是,因为它有大量的后备来模拟它们。
    • 呃,对不起。这是?目前他们已经死了,直到一个新的规范浮出水面并被集成(提示:这将需要至少半年甚至更长时间......),他还在专门寻找一个 WebSocket 中间件。当然,所有的后备方案仍然很有效,但那些不是 WebSockets,虽然 Socket.IO 尽最大努力为所有这些方案模拟 Socket 的行为,但用户体验仍然不同于“真正的套接字”。
    • @RobinDuckett 你有没有看到由于协议中的安全漏洞,整个 FF4 和 Opera 在发布时将不支持 websockets。如果 chrome 在 9 或更高版本中遵循套件,我不会感到惊讶。 (不过我会非常失望。)
    • 我相信有一些关于整个问题的反驳帖子。关键是,你不需要使用 websockets 来做这种工作。
    • 重点是,除了 WebSockets 之外的所有东西都不是 Socket(而且 Flash Sockets 有自己的怪癖)不知道你在做什么,但我做了一些游戏实验,甚至 Flash Sockets 糟透了。如果提问者真正说明他正在创建什么样的应用程序,也许会更有帮助。
    【解决方案2】:

    您不需要 socket.io 的连接中间件,事实上这可能不是将 socket.io 与连接一起使用的最佳方式。这是我的工作:

    var connect = require('connect');
    var io = require('socket.io');
    
    var server = connect.createServer(
      connect.router(function(app) {
        app.get('/', function(req, res, next) {
          res.writeHead(200, {'Content-Type': 'text/html'});
          res.end(fs.readFileSync(__dirname + '/assets/index.html', 'utf8'));
          // above file contains <script src="/socket.io/socket.io.js" type="text/javascript"></script>
        });
      })
    ).listen(80);
    
    var socket = io.listen(server);
    socket.on('connection', function(client) {
      client.on('message', function(message) {console.log(message)});
      client.on('disconnect', function() {});
    });
    

    【讨论】:

    • readFileSync 的规模会很大...... 呸,不要在这里发动火焰战争。
    • 我相信向某人展示示例,而不是为他们做他们的工作,这似乎是您对 Ivo 的信念 :)
    • @Robin 当然我总是发布“codez”。即使我有时发布代码,我也不会发布设计上不完整和糟糕的代码。
    • 对我来说看起来很完整,我在 3 小时内构建了一个拥有 11k 访问者的应用程序时使用了 readFileSync,它运行良好,无知是愚人仇恨的幸福。
    • 谢谢罗宾,这正是我自己设法做到的(没有 readFileSync :)
    【解决方案3】:

    我的socket.io-connect 版本应该可以正常工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-03
      • 2021-01-29
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 2012-01-18
      相关资源
      最近更新 更多