同样的代码,在windows下客户端无法连接,在linux下正常

netant

我按照手册上的示例,在本地测试,发现下面的代码在wsl2 linux下面可以启动服务,网页客户端也可以连接,但在windows 10下启动服务,也没有出错,但就连接不上,网页客户端连接的时候没提示,请问这是什么原因?

客户端的部分代码:

ws.onopen = function () {
            console.log('ws连接状态:' + ws.readyState);
            //连接成功则发送一个数据
            ws.send('test1');
        }

这一段代码都不执行。

下面是服务端的代码

<?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)
{
    // 定时执行
    $time_interval = 3;//每隔5秒执行一次
    // 给connection对象临时添加一个timer_id属性保存定时器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";
};

// 连接关闭时,删除对应连接的定时器
$ws_worker->onClose = function($connection)
{
    echo "Connection closed\n";
    // 删除定时器
    // Timer::del($connection->timer_id);
};

// Run worker
Worker::runAll();
764 1 0
1个回答

walkor
  • netant 2022-04-20

    我对过了,不行,根本没有出错信息。

  • 小杰 2022-04-20

    地址在win下是不是127.0.0.1?

  • netant 2022-04-21

    是的
    在另一台WIN电脑下又可以,难道和电脑配置有关?

年代过于久远,无法发表回答
🔝