如何使用php创建异步套接字服务器?

我正在尝试创建一个异步套接字服务器来处理套接字客户端,在需要时向客户端发送消息。 我使用 reactphp库来实现它,但我做不到,我的服务器仍然被阻止。 我是这个库的新手,请帮忙。</ p>

  require'ports / autoload.php'; 
$ loop = React \ EventLoop \ Factory :: create();

$ socket = new React \ Socket \ Server($ loop);
$ socket-&gt; on('connection',function($ conn){
$ conn-&gt; pipe($ conn);
}};
echo“套接字服务器侦听端口4000.
”;
echo“你可以通过运行连接到它:telnet localhost 4000
”;
$ socket-&gt; listen(4200);
$ loop-&gt; run();

//由于阻塞套接字而无法运行代码底部
</ code> </ pre>
</ div>

展开原文

原文

I'm trying to create a Asynchronous socket server to handle socket client, send message to client when it's needs. I use reactphp library to implement it but I can't do correct, my server still is blocked. I'm new in this library, please help.

require 'vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$socket = new React\Socket\Server($loop);
$socket->on('connection', function ($conn) {
    $conn->pipe($conn);
});
echo "Socket server listening on port 4000.
";
echo "You can connect to it by running: telnet localhost 4000
";
$socket->listen(4200);
$loop->run();


// code bottom doesn't run because of blocking socket

duannuan0074
duannuan0074 尝试在$loop调用之前添加代码
3 年多之前 回复

1个回答



$ loop-&gt; run(); </ code>运行事件循环并且永远不会返回,除非你停止 环。 循环是您的调度程序,并在发生事件时调用事件处理程序。</ p>

如果要对事件做出反应,则必须在运行循环之前注册事件侦听器。</ p>

</ div>

展开原文

原文

$loop->run(); runs the event loop and will never return unless you stop the loop. The loop is your scheduler and invokes your event handlers in case events occur.

If you want to react to events, you have to register event listeners before you run the loop.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐