我按照手册上的示例,在本地测试,发现下面的代码在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();
客户端连接失败参考手册 https://www.workerman.net/doc/workerman/faq/client-connect-fail.html 排查
我对过了,不行,根本没有出错信息。
地址在win下是不是127.0.0.1?
是的
在另一台WIN电脑下又可以,难道和电脑配置有关?