用java语言作为客户端连接项目中workerman-chat服务端,当连接数到达44的时候,再打开一个新的连接,
发送消息相隔一秒左右就自动断开连接了,但是,通过浏览器访问,不受这个限制。
java客户端部署在tomcat里面
下载了官方的workerman-chat案例部署到本地,再通过java程序去连接,100个都不成问题。
项目中使用的版本是:
GateWay 2.0.3,官方案例3.0.12
Workerman 3.2.9,官方案例3.5.15
getway 进程数设置的是4
下面是运行php start.php status的结果,也没有看到异常信息
这个是服务端ws:ws://47.106.207.53:7272
发送的消息是:{"type":"login","name":"凤渡","room_id":4,"user_id":1542990392,"group_id":5,"room_type":1}
试过以下方法:
1、换不同的服务器分别连接,也不行
2、看论坛说可能是客户端和系统的问题,然后部署到linux-centos7里面,然后再访问,也不行
3、想过可能是版本的问题,但是项目中的版本是不可能升级的,所以就放弃这个想法了
4、修改getway 进程数,这个还没试过
可以通过以下连接,放入连接用户:
1、http://47.106.207.53:8081/robot/login?groupId=5 --间隔时间1秒,打开50个连接,放入50个用户
2、http://47.106.207.53:8081/robot/login?groupId=5 一次性放入一个用户
下面是给出的截图,望大佬解惑一下!!!!
服务端抓包看下是哪一方关闭的连接
tcpdump -Ans 4096 -iany port 7272
如果新版本没问题,可以想办法升级下版本。
这个是我服务器抓包的数据,就是在这个地方,就发送logout的连接了。
从抓包看是服务端主动关闭了连接,关闭原因可能是认为包是错误的,不符合websocket通讯协议。
也有可能是业务逻辑里调用了closeClient()关闭了连接
业务逻辑里面,不会主动去调用close,只是监听,有close的请求是,执行打印语句。
服务器主动关闭的话,认为包是错误的,包的数据格式都是一样的,只是内容不一样。
我在想是不是有什么物理上的限制还是其他,因为这个很奇怪,到达这个连接数的话,只要发送login消息,就会被断开连接,不发送消息就没事。