我按照手冊(cè)上的示例,在本地測(cè)試,發(fā)現(xiàn)下面的代碼在wsl2 linux下面可以啟動(dòng)服務(wù),網(wǎng)頁(yè)客戶端也可以連接,但在windows 10下啟動(dòng)服務(wù),也沒(méi)有出錯(cuò),但就連接不上,網(wǎng)頁(yè)客戶端連接的時(shí)候沒(méi)提示,請(qǐng)問(wèn)這是什么原因?
客戶端的部分代碼:
ws.onopen = function () {
console.log('ws連接狀態(tài):' + ws.readyState);
//連接成功則發(fā)送一個(gè)數(shù)據(jù)
ws.send('test1');
}
這一段代碼都不執(zhí)行。
下面是服務(wù)端的代碼
<?php
use Workerman\Worker;
use Workerman\Lib\Timer;
use Workerman\Connection\TcpConnection;
require_once __DIR__ . '/vendor/autoload.php';
// Create a Websocket server
$ws_worker = new Worker('websocket://0.0.0.0:9999');
$ws_worker->onWorkerStart = function($worker)
{
echo 'worker start' . PHP_EOL;
};
$ws_worker->onConnect = function(TcpConnection $connection)
{
// 定時(shí)執(zhí)行
$time_interval = 3;//每隔5秒執(zhí)行一次
// 給connection對(duì)象臨時(shí)添加一個(gè)timer_id屬性保存定時(shí)器id
$connection->timer_id = Timer::add($time_interval, function() use($connection)
{
$data = rand(0, 100);
$connection->send($data);
echo 'send data:' . $data . "\n";
});
};
$ws_worker->onMessage = function($connection, $data)
{
echo $data . "\n";
};
// 連接關(guān)閉時(shí),刪除對(duì)應(yīng)連接的定時(shí)器
$ws_worker->onClose = function($connection)
{
echo "Connection closed\n";
// 刪除定時(shí)器
// Timer::del($connection->timer_id);
};
// Run worker
Worker::runAll();