2017-07-27 101 views
2

我想开发一个使用Websockets(棘轮)的聊天系统。到现在为止,我已经制作了一个功能强大的基于PHP的Websocket服务器,它能够使用以下方法回复预定义的JSON编码消息。棘轮Websocket推集成

function onMessage(ConnectionInterface $from, $msg){ ... } 

的问题是,我想通过后台工作/线程从后端数据库邮件推送到正确的客户端,如果东西在我的表改变。这可能使用PHP?

我不希望客户端每隔5分钟要求websocket服务器刷新其状态,如下所示。

{"action":"giveMeUpdates"} 

但web服务器应该能够做这样的事情:

{"status":"newMessages", "messagelist":[...]} 

另外:

class Chat extends ChatActionHandler implements MessageComponentInterface { ... } 

这是我的课,其中ChatActionHandler拥有的功能与客户端请求交互。使用MessageComponentInterface,我只能回复Socket事件,如function onOpen(ConnectionInterface $conn)。它是由RatchetIO服务器拼命地跑:

$server = IoServer::factory(
    new Chat(), 
    8080); 
$server->run(); 

回答

0

您可以将定时器,比如cron与

$this->loop->addPeriodicTimer($timeout, function($timer) {}); 
+0

的MessageComponentInterface不持有这样的功能。你的意思是\ React \ EventLoop \ LoopInterface?我想我可能需要在Chat类的构造函数中的某处首先实例化它? – Piter1700

+0

@ Piter1700看到这个。 https://github.com/ratchetphp/Ratchet/issues/171 – Grey