如何在客户端多次发布信息?
我的意思是当我将信息从一个用户发布到另一个用户时,他收到并向后退,但这只是一次
因为当一个用户向另一个用户发送内容时,正在加载GET并且接收停止,我怎样才能这样做,以便客户端永远收到,而不仅仅是一次?
答案 0 :(得分:6)
pub / sub如何工作:就像一个频道,你从一边放,你从另一边得到同样的。
因此,只有当有一些订阅者时才会收到发布者数据。
使用pubSub上下文并订阅频道说" x"从另一方面来说,继续从用户那里获取数据,并且每次使用发布命令将其发布到同一个频道。
订户:
$redis = new Predis\Client(// put setting here, if req);
$pubsub = $redis->pubSub();
$pubsub->subscribe($channel1);
foreach ($pubsub as $message)
{
switch ($message->kind) {
case 'subscribe':
echo "Subscribed to {$message->channel}\n";
break;
case 'message':
// do something
break;
}
}
出版商:
while(1) // or whatever condition
{
$redis->publish($channel2, $userdata);
}
您可以使用聊天消息来断开连接,例如发布退出并在订阅者处检查是否退出然后关闭连接,然后在发布者端检查是否没有订户连接,也关闭它。