相关疑难解决方法(0)

如何获取特定用户的连接对象?

我在使用Ratchet库的实时Symfony应用程序中工作,在这个应用程序中我需要将一些数据发送给特定用户,因此逻辑解决方案是使用SessionProvider将Symfony2 Session对象附加到每个传入的Connection对象.正如文档所述,我已经设置了一个非本地会话处理程序来存储我的会话,即通过PDO存储在数据库中.并且目前工作正常,但我需要获取特定用户的Connection对象以向他发送一些数据,所以在其他方面我需要找到引用此用户的连接对象,我找不到办法它?她是我的服务器代码:

    $app=new AggregateApplication();
    $loop   = \React\EventLoop\Factory::create();
    $context = new \React\ZMQ\Context($loop);
    $pull = $context->getSocket(\ZMQ::SOCKET_PULL);
    $pull->bind('tcp://127.0.0.1:5555');
    $pull->on('message', array($app, 'onNotification'));
    $webSock = new \React\Socket\Server($loop);
    $webSock->listen(8080, '127.0.0.1');
    $handler = $this->getContainer()->get('session.handler');
    $server=new \Ratchet\Wamp\WampServer($app);
    $server = new SessionProvider($server, $handler);
    $webServer = new \Ratchet\Server\IoServer(new \Ratchet\WebSocket\WsServer($server),$webSock);
    $loop->run();
Run Code Online (Sandbox Code Playgroud)

php session websocket symfony ratchet

8
推荐指数
1
解决办法
6626
查看次数

棘轮PHP和长时间运行的任务

我正在使用棘轮php.我是这样开始的:

$loop    = \React\EventLoop\Factory::create();
$webSock = new \React\Socket\Server($loop);

$webSock->listen($this->port, $this->host);

$webServer = new \Ratchet\Server\IoServer(
    new \Ratchet\Http\HttpServer(
        new \Ratchet\WebSocket\WsServer(
            new PusherServer()
        )
    ),
    $webSock
);

return $loop;
Run Code Online (Sandbox Code Playgroud)

现在,在我onMessage()Pusherserver班级(实现MessageComponentInterface)中,我想执行一个长期的阻塞任务.这将是一个HTTP请求,可能需要十秒钟才能完成.

如何在onMessage()执行上一个HTTP请求时自由处理其他请求?我不能使用pthreads,因为我无权更改我已经给出的php版本(这是线程安全的).

php ratchet reactphp

5
推荐指数
1
解决办法
1286
查看次数

标签 统计

php ×2

ratchet ×2

reactphp ×1

session ×1

symfony ×1

websocket ×1