使用WebSocket手动连接到socket.io 1.x,进行容量测试

伊亚德·阿萨夫

我正在使用一个使用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代码,但是如果有人有任何线索或资源可能会有所帮助,请告诉我。谢谢。

伊亚德·阿萨夫

我结束了使用socket.io-client npm软件包的设置,该软件包能够在每个连接上连接到新会话。我在本期中找到了一个示例基准

使用纯websockets和HTTP手动连接到socket.io并不需要太多,但要感谢Yannik指出使用中解析器v1.x内部工作的规范可以在这里找到

谢谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用WebSocket手动连接到socket.io 1.x,进行容量测试

来自分类Dev

如何使用socket.io-client连接到标准websocket?

来自分类Dev

Socket.io 1.x:仅使用WebSockets?

来自分类Dev

手动连接sails.io.js

来自分类Dev

我的大学使用SMBv1进行文件共享。在Windows 10计算机上手动启用SMBv1是个坏主意吗?

来自分类Dev

使用Dispatchers.IO进行Kotlin协程测试

来自分类Dev

如何使用netcat / socat / telnet手动连接到Websocket?

来自分类Dev

在Socket.io版本> 1中列出所有连接到会议室的客户端

来自分类Dev

发射到socket.io 1.X名称空间的特定空间

来自分类Dev

使用Apache和Socket.io的代理WebSocket连接

来自分类Dev

无法使用Express Server连接到socket.io

来自分类Dev

Socket.io 与 PHP websocket 握手?

来自分类Dev

如何使用HTTPS从Node socket.io-client **连接到Node socket.io-server

来自分类Dev

Sails.js-在websocket或socket.io之间进行选择

来自分类Dev

将事件连接到socket.io

来自分类Dev

无法从Android socket.io 2客户端连接到node.js socket.io 3.x服务器

来自分类Dev

Card.IO自定义手动屏幕

来自分类Dev

如何将Meteor服务器连接到外部Websocket / Socket IO API?

来自分类Dev

如何将Meteor服务器连接到外部Websocket / Socket IO API?

来自分类Dev

使用Xcode手动配置单元测试

来自分类Dev

将socket.io从0.9.x迁移到1.x,配置RedisStore时遇到问题

来自分类Dev

Espresso同时进行自动和手动测试

来自分类Dev

如何使用yaml手动对Jekyll页面进行排序?

来自分类Dev

如何使用Django进行手动提交

来自分类Dev

在VPS上使用Juju进行手动引导

来自分类Dev

如何使用PHP cURL手动进行“表单提交”?

来自分类Dev

使用Crypto ++手动进行CBC加密处理

来自分类Dev

如何测试Spring @Transactional而不只是进入休眠1级缓存或执行手动会话刷新?

来自分类Dev

Android开发,Gottox socket.io-java-client:文件未找到异常/socket.io/1/

Related 相关文章

  1. 1

    使用WebSocket手动连接到socket.io 1.x,进行容量测试

  2. 2

    如何使用socket.io-client连接到标准websocket?

  3. 3

    Socket.io 1.x:仅使用WebSockets?

  4. 4

    手动连接sails.io.js

  5. 5

    我的大学使用SMBv1进行文件共享。在Windows 10计算机上手动启用SMBv1是个坏主意吗?

  6. 6

    使用Dispatchers.IO进行Kotlin协程测试

  7. 7

    如何使用netcat / socat / telnet手动连接到Websocket?

  8. 8

    在Socket.io版本> 1中列出所有连接到会议室的客户端

  9. 9

    发射到socket.io 1.X名称空间的特定空间

  10. 10

    使用Apache和Socket.io的代理WebSocket连接

  11. 11

    无法使用Express Server连接到socket.io

  12. 12

    Socket.io 与 PHP websocket 握手?

  13. 13

    如何使用HTTPS从Node socket.io-client **连接到Node socket.io-server

  14. 14

    Sails.js-在websocket或socket.io之间进行选择

  15. 15

    将事件连接到socket.io

  16. 16

    无法从Android socket.io 2客户端连接到node.js socket.io 3.x服务器

  17. 17

    Card.IO自定义手动屏幕

  18. 18

    如何将Meteor服务器连接到外部Websocket / Socket IO API?

  19. 19

    如何将Meteor服务器连接到外部Websocket / Socket IO API?

  20. 20

    使用Xcode手动配置单元测试

  21. 21

    将socket.io从0.9.x迁移到1.x,配置RedisStore时遇到问题

  22. 22

    Espresso同时进行自动和手动测试

  23. 23

    如何使用yaml手动对Jekyll页面进行排序?

  24. 24

    如何使用Django进行手动提交

  25. 25

    在VPS上使用Juju进行手动引导

  26. 26

    如何使用PHP cURL手动进行“表单提交”?

  27. 27

    使用Crypto ++手动进行CBC加密处理

  28. 28

    如何测试Spring @Transactional而不只是进入休眠1级缓存或执行手动会话刷新?

  29. 29

    Android开发,Gottox socket.io-java-client:文件未找到异常/socket.io/1/

热门标签

归档