gpt4 book ai didi

node.js - 使用 websockets 手动连接到 socket.io 1.x,容量测试

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:28 24 4
gpt4 key购买 nike

我正在使用一个nodejs Express服务器,它使用socket.io与iOS客户端进行通信,并且在尝试测试有多少客户端可以同时连接和交换数据时遇到了一些麻烦。

我的目标是能够运行一个连接到具有数千个不同 session 的 socket.io 的脚本,以及发送和接收数据以了解我们系统的规模。目前,我们在 Heroku 上使用单个测功机,但可能很快就会考虑在 AWS 上使用其他选项。

我找到了应该可以为早期版本的socket.io 做的事情的代码,例如 this ,但遇到了问题,因为 v1.x 似乎有一个非常不同的握手协议(protocol)。我尝试使用 socket.io-client包,但尝试多次连接只能模拟一个 session 的使用,我需要在独立用户中模拟许多次。

我一直在拆解 socket.io-client 代码,但只创建了一个连接 - 我陷入了发送数据部分。如果有人有任何知识或可以指出一些有关如何在客户端和 socket.io 服务器之间发送数据的书面资源,这将对我有很大帮助。

这是我到目前为止所拥有的:

var needle = require('needle'),
WebSocket = require('ws'),
BASE_URL = 'url-to-socket-host:5002';

var connectionNo = 0;
needle.get('http://' + BASE_URL + '/socket.io/?EIO=3&transport=polling&t=1416506501335-0', function (err, resp) {

// parse the sid
var resp = JSON.parse(resp.body.toString().substring(5, resp.body.toString().length));

// use the sid to connect using websockets
var url = 'ws://' + BASE_URL + '/socket.io/?EIO=3&transport=websocket&sid=' + resp.sid;
console.log(connectionNo + ' with sid: ' + resp.sid);
var socket = new WebSocket(url, void(0), {
agent: false
});

socket.on('open', function () {
console.log('Websocket connected: ' + connectionNo);

// I don't understand how to send data to the server here,
// from looking at the source code it should use some kind
// of binary encoding, any ideas?

socket.on('message', function (msg) {
console.log(msg);
});
});
});

我将继续解构 socket.io-client 代码,但如果有人有任何可能有帮助的线索或资源,请告诉我。谢谢。

最佳答案

我最终设置使用 socket.io-client npm 包,它能够在每个连接上连接到新 session 。我在 this issue 中找到了一个示例基准测试.

我不需要使用纯 websockets 和 HTTP 手动连接到 socket.io,但感谢 Yannik 指出 parser正在使用。 v1.x 内部工作原理可以在 here 找到。 .

谢谢!

关于node.js - 使用 websockets 手动连接到 socket.io 1.x,容量测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27167387/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com