Laravel ReactPHP Socket 服务器需要在启动当天重启

时间:2021-06-30 11:27:38

标签: sockets laravel-8 reactphp

我已经在 laravel 命令文件中创建了服务器并在主管中设置以连续运行套接字服务器以接受客户端消息

Laravel 命令文件代码 Server.php

$loop = React\EventLoop\Factory::create();
$IP = getHostByName(getHostName()); // this will get current server IP address // 192.168.0.50
$socket = new React\Socket\Server($IP.':8080', $loop);

$socket->on('connection', function (React\Socket\ConnectionInterface $connection) {
    $connection->on('data', function ($data) use ($connection) {
        // process data sent from client
    });
});
$loop->run();

Client.php

$loop = React\EventLoop\Factory::create();
$connector = new React\Socket\Connector($loop);

$connector->connect('192.168.0.50:8080')->then(function (React\Socket\ConnectionInterface $connection) use ($loop,$data) {
    $connection->write($data); // sent data to Server.php
});
$loop->run();

这工作正常,但当我第二天检查时,它将从 Client.php 发送数据,但在 Server.php 未收到然后重新启动 Server.php / php artisan 服务器的主管,然后它可以正常工作一整天

1 个答案:

答案 0 :(得分:0)

我发现了到底发生了什么。

我已经设置了带有端口 192.168.0.50:8080 的 IP 来与服务器通信。但是第二天查了一下IP改成127.0.0.1:8080

以下是与任何 IP 地址通信的解决方案。 Server.php

$loop = React\EventLoop\Factory::create();
$IP = getHostByName(getHostName()); // this will get current server IP address // 192.168.0.50
$IP = '0.0.0.0'; -> set this to I/O to any IP address
$socket = new React\Socket\Server($IP.':8080', $loop);

$socket->on('connection', function (React\Socket\ConnectionInterface $connection) {
    $connection->on('data', function ($data) use ($connection) {
        // process data sent from client
    });
});
$loop->run();

sudo lsof -i -P -n | grep LISTEN -> run this cmd to check 8080 port

更新后的代码,现在显示 *:8080