【问题标题】:Huge delay from ping test with socket.io in nodejs在 nodejs 中使用 socket.io 进行 ping 测试的巨大延迟
【发布时间】:2016-02-04 11:34:21
【问题描述】:

在运行这个简单的 ping 测试时,我一直遇到 25 秒的延迟。服务器没有记录 ping 事件,但我假设它正在接收它,因为客户端正在收到回复。有关如何解决此问题的任何想法?

客户

    var io = require('socket.io-client')('http://68.12.157.176:3000')
    var ping_time = Date.now();

    function ping(){
      ping_time = Date.now();
      console.log('sending ping...');
      io.emit('ping');
    }
    ping();

    io.on('pong', function (data) {
      ping_time = Date.now() - ping_time;
      console.log("replied in " + ping_time + "ms");
      ping();
    });

客户日志

    sending ping...
    replied in 25202ms
    sending ping...
    replied in 25028ms
    sending ping...
    replied in 25029ms
    sending ping...
    replied in 25032ms
    sending ping...
    replied in 25016ms

服务器

    var express = require('express');
    var app = express();
    var server = require('http').createServer(app);
    var io = require('../..')(server);
    var port = process.env.PORT || 3000;

    server.listen(port, function () {
      console.log('Server listening at port %d', port);
    });

    io.on('connection', function (socket) {
      console.log('client connected');
      socket.on('ping', function (data) {
        console.log("received ping, sending reply"); //no log shown???
        socket.emit('pong'); //client receives event ~25 seconds after request
      });
    });

服务器日志

    Server listening at port 3000
    client connected

【问题讨论】:

  • 我认为 socket.io 可能使用 pingpong 作为消息名称本身。尝试更改为不同的消息名称。
  • 解决了。谢谢!

标签: node.js websocket socket.io


【解决方案1】:

将我的评论变成答案,因为它解决了您的问题:

Socket.io 使用pingpong 作为实现内部的消息名称。更改为不同的消息名称。

【讨论】:

  • 我确实更改了名称并且工作得像个魅力!自从 0.9 版本以来,大量开发人员一直在使用 ping/pong 名称,这是如何没有记录的。谢谢你,你不知道我在哪里解决这个问题!
  • @Maziyar - socket.io 文档非常小 - 它没有涵盖很多内容。在我看来,他们允许这是一个冲突是一个设计错误。
  • 嗨@jfriend00,我没有问最初的问题,所以我不能接受它作为答案。但可以肯定的是,它确实解决了我的问题。希望用户接受这个作为答案。
  • @physiii - 这回答了你的问题吗?如果是这样,请通过单击答案左侧的绿色复选标记向社区表明这一点。如果没有,请说明您仍需要帮助的地方。
猜你喜欢
  • 2018-09-19
  • 2014-07-13
  • 1970-01-01
  • 2013-03-01
  • 1970-01-01
  • 2015-05-28
  • 2015-10-29
  • 2017-08-09
  • 1970-01-01
相关资源
最近更新 更多