php sec-websocket-accept,Sec-WebSocket-Accept not found以及 Sec-WebSocket-Protocol问题

承上。

环境PHP 7.0.23,Workerman 3.5.24

第一个问题解决了,但是又碰到了新的问题。我预期通过wss连接获取的数据如下(下面截图来自于正常浏览器调界面):

3d5089713faf29e1c3d4647d2e5cd4be.png

蓝色高亮部分的文本对应图中第二个红框,红框里面有两个小圆点,这是目标网站使用的消息分隔符(不可见,我在这里特意说明,是怀疑问题可能是这些不可见字符造成的,这两个字符分别是\X14和\X01)。

我通过workerman 3.5.24 + PHP7.0.23获取执行脚本(test.php),截图如下:

713ccd5e542d9359db03479d2c8540ed.png

里面有部分消息乱码,将这段响应保存到txt文件,以Hex View方式观看,可以看到第一条数据 ( “·__time·|...” )是没有问题的,而后面接受的数据是乱码

7c86ae02b2fee6b59888fca5f6def157.png

紧接着的数据应该是"·CONFIG_2_0·F|CG;AD=..."才是。

我另外从王网上找了一个python程序,也是通过websocket连接该URL,获取的数据是正常的,如下图:(最开始我怀疑是站点做的反爬虫措施,重要数据故意扰乱了,但这个程序证明了不是。因为之前使用workerman也不是所有的数据都获取不到,部分较短的消息是可以获取的。)

cf1d102b0509e5de57ef02f00daf3495.png

由于对方的业务数据里面会出现一些\x00,\x01,\0x14,\x015这些不可见字符作为分隔符,所以是否会对解析数据产生影响。

后来,我考虑有可能是PHP版本的问题,于是安装了PHP7.3。再次运行,效果如下:

784db736329d9d5c5a31db5fd7652ad6.png

出现了上个问题所描述的那个问题:当获取一个服务器的握手消息,并且客户端发送一个响应消息后,服务器不再发送消息,卡住了。(这次是在添加了前一个问题中服务器要求的header “'Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits'”)情况下。

不知道是否遇到了workerman的一个bug或者是我有哪些地方没有设置正确。请群主帮忙看一下。脚本文件已经作为附件上传(test.rar)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值