我已经在 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 服务器的主管,然后它可以正常工作一整天
答案 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