我正在建立一个基于Comet技术的聊天,我遇到了这个问题。所以,对于彗星,我正在使用 ningx 和它的推送模块。一切正常。我可以通过专用渠道向其他用户发送消息。但是,当我开始考虑发送给收到该消息之前脱机的用户的消息会发生什么时,问题就出现了。 我想在将消息推入通道之前检查接收器是否仍在监听该通道。如果是这样,我只会推送消息,否则我只想将消息放入数据库,以便用户可以在他/她在线时阅读。
问题:
谢谢!
答案 0 :(得分:1)
我已经回答了我自己的问题。这是我用来发布消息的代码,以及我在发布消息后如何获得有用的信息。
$channel_id = 'c'.$_POST['uid'];
$message['sender']=$_SESSION['user.ID'];
$message['firstname']=$_SESSION['user.firstname'];
$message['message']=$_POST['msg'];
$message['type']='chat';
$c = curl_init('http://192.168.56.101/publish?cid='.$channel_id);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, 'pre('.json_encode($message).')');
$r = curl_exec($c);
在这个示例中,var $ r包含:排队的消息:0最后请求:4秒。之前(-1 =从不)活跃订阅者:1
你可以看到,它还包含许多订阅者