客户端连接websocket超时(PHP7.3连接正常,PHP5.6连接超时)

daij

本人直接使用的windows,phpstudy_pro本地环境
安装了php5.6版本和php7.3版本
两个版本都开启了socket扩展
当环境变量是php7.3时,运行测试代码
截图
开启服务成功,js正常连接websocket
但是当环境变量切换到PHP5.6时
同样的测试代码,开启服务也成功:
截图

但是js客户端会一直卡在连接状态
再过一会儿后就提示连接超时
截图
截图
使用原生websocket时,php5.6也是可以正常使用的,只是使用workerman时,不能正常使用
因公司项目环境,必须使用5.6环境,所以必须解决这个问题,求各位大佬赐教,这个到底是什么问题

阅读 1693
4个回答

walkor
<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';

// 注意:这里与上个例子不同,使用的是websocket协议
$ws_worker = new Worker("websocket://0.0.0.0:2000");

// 启动4个进程对外提供服务
$ws_worker->count = 4;

// 当收到客户端发来的数据后返回hello $data给客户端
$ws_worker->onMessage = function($connection, $data)
{
    // 向客户端发送hello $data
    $connection->send('hello ' . $data);
};

// 运行worker
Worker::runAll();

测试下上面代码,排除下业务逻辑问题。

  • daij 2020-04-20

    回复不能贴图,测试了,还是和之前一样的,服务能正常启动,但是js连接的时候就是连接不上,等4分钟后就超时

  • walkor 2020-04-20

    可能是php的bug,你看下你们线上php版本是多少,用线上一致的版本试下。

  • daij 2020-04-20

    @1:我换成php5.6.27版本,功能已经正常

daij

原本是PHP5.6.9版本,我切换到PHP5.6.27的版本,功能恢复正常,所以问题暂时解决,但是欢迎各位大佬继续讨论此问题,这个异常可能是个BUG,不知道有没有解决的办法

  • 暂无评论
被遗忘的小星星

windows环境同php版本,无法握手成功,只能换个版本去启动服务就行了,具体为什么不行等待大神

  • 暂无评论
不知名网友
  • Tinywan 2021-12-17

    新项目就用7.4 + 以上吧!5.6就算了