我正在使用PubNub创建一个人对人聊天应用程序.
基本上,每个用户都订阅了他们自己的频道,然后双方以即时消息的方式将消息发送到彼此的频道.
然后,消息将显示在页面上.我正在使用JQuery.
pubnub.subscribe({
restore : true,
channel : 'my_channel',
callback : function(message) {
console.log(JSON.stringify(message));
$('div.chatbox').append('<div>'+message+'</div>');
}
});
Run Code Online (Sandbox Code Playgroud)
但是,我希望能够检测用户何时脱机(我真的不在乎他们如何脱机,只是因为与另一方的连接不再可用).
因此,如果用户1和用户2正在通话,则用户2下线,PubNub端是否有任何机制允许用户1检查用户2的连接状态?我如何在JS代码中实现它(骨架代码是可以的)?
提前致谢.
PS我不想使用Socket.IO
为了检测移动设备,平板电脑和Web设备上丢失的网络连接,您可以使用PubNub通过绑定到PubNub JavaScript API中的内置事件来显示连接状态.理解掉线连接和重新连接状态有几个方面.此外,对于PubNub,您可能对社交发现您的在线朋友的连接/断开事件感兴趣.通过这种方式,您可以获得绿点效果,表示您的朋友在线状态,以及当您的朋友离线时的红点.我们将通过双方进行连接状态跟踪,以便您可以在自己的设备离线/在线时以及当他们的朋友上线/离线时检测并通知您的用户.
在任何支持JavaScript的设备(如移动电话和Web浏览器)上检测到本地连接状态都很简单.您将使用一些高级PubNub参数来访问在连接状态更改期间触发的回调.在应用程序代码中注册回调很容易.这是一个快速复制/粘贴起点,供您放在后袋:
<div pub-key="demo" sub-key="demo" id="pubnub"></div>
<script src="http://cdn.pubnub.com/pubnub-3.3.min.js"></script>
<script>(function(){
// LISTEN FOR MESSAGES
PUBNUB.subscribe({
channel : "hello_world", // CONNECT TO THIS CHANNEL.
restore : true, // STAY CONNECTED, EVEN WHEN BROWSER IS
// CLOSED OR WHEN PAGE CHANGES.
callback : alert, // FUNCTION TO RUN ON MESSAGE RECEIVED.
disconnect : function() { // LOCAL LOST CONNECTION.
alert("Connection Lost.")
},
reconnect : function() { // CONNECTION RESTORED.
alert("And we're Back!")
},
connect : function() { // CONNECTION ESTABLISHED.
PUBNUB.publish({ // SEND A MESSAGE.
channel : "hello_world",
message : "Hi from PubNub."
})
}
})
})();</script>
Run Code Online (Sandbox Code Playgroud)
注意:上面显示的是一种注册本地设备连接事件的简单方法.
现在来谈谈PubNub Presence; PubNub的一项功能,它允许您在朋友上线或离线时检测朋友的连接并接收远程连接事件.
接下来,您想要了解在他们上线时检测您的朋友连接状态并离线.您也可以注册这些活动,但由于您需要提供用户的ID(或抽象ID),因此您可以做更多的工作.你可以通过PubNub的存在来做到这一点,但是它会涉及更多,我会发送给你两篇博文,让你快速前进.在我发送给您之前,我将向您展示注册朋友的远程在线/离线事件通知的重要代码段:
// Open Bidirectional Socket Connection with
// REMOTE Connection Detect "Presence" Events.
PUBNUB.subscribe({
channel : "my_channel", // Channel Name
connect : connect, // OnConnect Callback
callback : alert, // Received Message Callback
presence : presence // Presence Callback
});
Run Code Online (Sandbox Code Playgroud)
注意:使用PubNub Presence回调事件接收远程连接状态更新(朋友连接状态).
在代码示例中,您将看到状态回调.此参数选项需要一个函数引用,该函数引用将在您的朋友在同一PubNub通道上发生连接更改(在线/离线)时执行.好了,现在你掌握了一些东西,你需要查看以下博客文章,以帮助您了解有关PubNub存在的具体细节.
使用上面的链接和参考资料,了解有关PubNub Presence的所有信息
| 归档时间: |
|
| 查看次数: |
2940 次 |
| 最近记录: |