我们计划使用node.js创建一个实时SPA,我们正在测试延迟,请通过以下链接:
http://173.200.239.98:6060/
有2个区域...当用户将鼠标悬停在右侧的textarea上时,我们在左侧textarea中打印延迟,延迟以毫秒为单位。问题是延迟从0.3秒到6秒不等。网络插座是否正常?或者我做错了什么?
注意: - 服务器位于底特律,美国,我正在从印度钦奈访问服务器。
消息来源代码:
<!DOCTYPE html>
<html>
<head>
<meta charset='utf-8'/>
</head>
<body style='margin:0px' >
<table>
<tr>
<th>latency in milliseconds</th>
<th>hover to trigger message</th>
</tr>
<tr>
<td><textarea id='message' name='message' rows="20" cols="20" ></textarea></td>
<td><textarea id='hover' name='hover' rows="20" cols="20" ></textarea></td>
</tr>
</table>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script src="/socket.io/socket.io.js"></script>
<script>
jQuery(function($){
var socket = io.connect();
var messagearea=document.getElementById("message");
var workarea=document.getElementById("hover");
workarea.onmousemove=function(){
var startTime = Date.now();
socket.emit('ping',startTime);
};
socket.on('pong', function(startTime) {
var latency = Date.now() - startTime;
messagearea.innerHTML= messagearea.innerHTML + latency + '\n';
messagearea.scrollTop = messagearea.scrollHeight;
});
});
</script>
</body>
</html>
答案 0 :(得分:1)
我通过ping测试和你的应用获得了几乎相同的结果。由于ping测试使您的客户端/服务器脱离了等式并使用了一个众所周知的网络工具 - 如果您在应用程序中获得与ping测试类似的结果,那么您的客户端/服务器运行良好而不是延迟。
现在,当你从印度到底特律进行测试时,你正在世界各地和至少一个主要海洋进行网络连接。如果存在一些延迟并不奇怪,如果延迟变化则不足为奇。只是为了让您知道发生了什么,您需要从印度向底特律发送一些TCP数据包。他们穿越许多不同的路由器和服务提供商以及电缆/光纤,最终到达底特律的服务器。因为它是TCP,所以必须沿反向路线发送确认。然后你的服务器获取数据包,然后以另一种方式发回TCP数据包,再次需要通过返回数据包进行确认。
我运行了你的应用并得到了这些结果:
我在加利福尼亚州圣何塞的位置使用ping -n 20 173.200.239.98
进行了ping测试并获得了以下结果:
正如您所看到的,ping测试给出了73-87ms。你的应用游戏74-83ms。那些基本相同。看起来你的客户端和服务器做得很好。
我建议您从您的位置运行自己的ping测试,看看您的ping测试与应用结果之间存在多大差异。
如果您希望查看数据包的路由,并了解每个站点的传输时间信息,可以运行以下命令:
tracert 173.200.239.98
它将显示到达目的地的每个连续主要跳跃的时间(以毫秒为单位)。
答案 1 :(得分:0)
WebSocket中没有任何内在因素可能导致不一致的延迟。如果这就是您所获得的,请尝试在同一网络路径上执行除WebSocket之外的其他操作并观察延迟。例如,ping或FTP。
如果你得到相同的不稳定延迟,那么你就知道它与WebSocket连接没什么关系。如果您没有获得相同的不稳定延迟,那么它可能与您的浏览器或JavaScript有关。也许处理或呈现消息的速度很慢?
基本上你需要开始剥离每一层以尝试发现哪一个正在增加延迟。
答案 2 :(得分:0)
显然它取决于你所在的位置。我认为这就是互联网的运作方式。 德国的延迟时间非常短:120到160毫秒......这很快......