在nodejs中使用socket.io进行pingtesting时,延迟很大

运行这个简单的pingtesting时,我经历了25秒的一致延迟。 服务器不loggingping事件,但我假设它正在接收它,因为客户端正在得到答复。 有想法该怎么解决这个吗?

客户

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作为实现内部的消息名称本身。 更改为不同的消息名称。