java socket第三方库_java socket.io第三方库使用记录

做一个可供测试人员可视化的压力测试工具,无奈服务器是基于socketio的方式,那怎么办?js?一个浏览器只能开二百多个,开一堆浏览器?也不方便各种模拟操作。nodejs?不熟,不会玩。C?不会mfc那些。最熟swing,只好用java。

然后发现socket.io也有java版本,当然是个人改写的。

坑很多,资料很约等于0,不看源码完全不知道怎么搞。

socket.io说白了就是把okhttp这个库的再封装一遍,另外还借鉴了engine.io这个库。作为简单的创建使用,git上的简单说明是足够了,但是深层次的使用,还是赶紧看看具体实现把。

我这边2个需求,一个是在一个进程中创建成千上万个连接,另一个有命名空间的情况下依然可以创建创建成千上万的连接。

那么一开始按照git上的示例,直接for几千个  最终只连了5个!!!

查源码,发现okhttp默认的连接数是5,而socket.io封装的情况下,并不创建新的okhttp 新对象,而是复用!!!草,那么只能手动创建okhttp的新对象,并且通过socket.io库中的Option 的对象:

options.webSocketFactory = okHttpClient;

options.callFactory = okHttpClient;

方式传过去。再传给IO.socket函数创建的对象。

ok,这里解决了连接问题。

然后是命名空间的连接:

直接类似与js 的socket.io写法,无效。

查源码,socket.io 中的Manager主要用于解析命名空间相关操作,但是为什么没有按预期解析,没细看。不管,直接创建Manager的对象manager,通过manager来连接manager = new Manager(new URI(str1),options);  再socket= manager.socket("/xxx"); 问题解决。注意options,必须这么传,虽然manager.socket("/xxx",options);也可以,但是这里的options接收的实体可能是一个static的全局作用的玩意儿,无论创建多少个options最后传过去后,生效的是最后一个。且所有连接都用这最后一个,导致连接数又tm只能5个。

全是坑。算了,有总比没有好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值