【发布时间】: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 可能使用
ping和pong作为消息名称本身。尝试更改为不同的消息名称。 -
解决了。谢谢!
标签: node.js websocket socket.io