UpT*_*eek 9 websocket node.js express
当客户端和服务器都在我的机器上本地运行时,似乎需要大约1秒来设置websocket连接.对我来说这似乎很长一段时间 - 是吗?任何人都可以将这与他们自己的经历相比
细节:
我在客户端(Chrome 25,Windows7 64)上有这样的websocket请求:
this.ws = new WebSocket('ws://' + host + ':' + port);
在服务器端,我有运行ExpressJS的 Node 和处理升级和WS连接的einaros/ws.
从新手WebSocket()到ws.onopen活动之前,我在客户端上计时.
这不正常。
我在 Ubuntu 上使用 Chrome 24 并使用以下测试代码(只需启动 Chrome 开发控制台并将其粘贴进去):
function test_ws(uri){
start = new Date().getTime();
ws = new WebSocket(uri);
ws.onopen = function(){
console.log("onopen of", uri, "in", (new Date().getTime() - start), "ms");
};
}
Run Code Online (Sandbox Code Playgroud)
以下是我针对uri的各种值获得的一些平均结果:
ws://localhost:6080:20毫秒(基于Python的自定义WebSocket服务器)ws://localhost:6090:3毫秒(自定义node.js + 基于einaros/ws的WebSocket服务器)ws://echo.websocket.org: 130 毫秒wss://echo.websocket.org:190 毫秒因此,即使使用与公共远程 Websocket 服务器的加密连接,距离打开事件的平均时间仍然不到五分之一秒。我看到的最大时间是250ms。对于本地连接,延迟实际上应该只有几毫秒。
我的猜测是您的服务器设置在接受连接之前正在执行一系列处理。也许您正在新的连接处理程序中初始化一堆客户端数据?
更新:
这是一个基于 einaros/ws 的简单 WebSocket 服务器,它使用上面的客户端测试代码提供 3 毫秒的 onopen 响应:
var WebSocketServer = require('ws').Server
, wss = new WebSocketServer({port: 6090});
wss.on('connection', function(ws) {
console.log("got connection");
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4116 次 |
| 最近记录: |