我正在使用一个使用socket.io来通信iOS客户端的nodejs express服务器,在尝试一次测试有多少客户端可以连接和交换数据时遇到了一些麻烦。
我的目标是能够运行一个脚本,该脚本通过数千个不同的会话连接到socket.io,并发送和接收数据以了解我们系统的规模。当前,我们在Heroku上使用单个dyno,但很快可能会考虑在AWS上使用其他选项。
我已经找到了应该对早期版本的socket.io进行操作的代码,例如this,但是由于似乎v1.x具有非常不同的握手协议,因此出现了问题。我尝试使用socket.io-client程序包,但尝试多次连接仅模拟一个会话的使用,我需要在独立用户中模拟多个会话。
我一直在挑选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代码,但是如果有人有任何线索或资源可能会有所帮助,请告诉我。谢谢。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句