本人直接使用的windows,phpstudy_pro本地環(huán)境
安裝了php5.6版本和php7.3版本
兩個(gè)版本都開啟了socket擴(kuò)展
當(dāng)環(huán)境變量是php7.3時(shí),運(yùn)行測試代碼
開啟服務(wù)成功,js正常連接websocket
但是當(dāng)環(huán)境變量切換到PHP5.6時(shí)
同樣的測試代碼,開啟服務(wù)也成功:
但是js客戶端會(huì)一直卡在連接狀態(tài)
再過一會(huì)兒后就提示連接超時(shí)
使用原生websocket時(shí),php5.6也是可以正常使用的,只是使用workerman時(shí),不能正常使用
因公司項(xiàng)目環(huán)境,必須使用5.6環(huán)境,所以必須解決這個(gè)問題,求各位大佬賜教,這個(gè)到底是什么問題
<?php
use Workerman\Worker;
require_once __DIR__ . '/Workerman/Autoloader.php';
// 注意:這里與上個(gè)例子不同,使用的是websocket協(xié)議
$ws_worker = new Worker("websocket://0.0.0.0:2000");
// 啟動(dòng)4個(gè)進(jìn)程對(duì)外提供服務(wù)
$ws_worker->count = 4;
// 當(dāng)收到客戶端發(fā)來的數(shù)據(jù)后返回hello $data給客戶端
$ws_worker->onMessage = function($connection, $data)
{
// 向客戶端發(fā)送hello $data
$connection->send('hello ' . $data);
};
// 運(yùn)行worker
Worker::runAll();
測試下上面代碼,排除下業(yè)務(wù)邏輯問題。
原本是PHP5.6.9版本,我切換到PHP5.6.27的版本,功能恢復(fù)正常,所以問題暫時(shí)解決,但是歡迎各位大佬繼續(xù)討論此問題,這個(gè)異??赡苁莻€(gè)BUG,不知道有沒有解決的辦法