2014-04-08 15 views
1

我使用websockets制作了一个正在运行的聊天应用程序。我有一个VPS,我想要托管此应用程序。该应用程序运行良好,但如果我可以连接两个随机用户(现在它就像1个聊天室,可以在其中聊天)。你如何跟踪谁在线?我应该每隔x秒检查一次AJAX吗? SetTimeOut会超载我的服务器,恐怕... Omegle如何做到这一点?我正在考虑解决方案,但AJAX解决方案是我能想到的唯一一个,但我不想让服务器过载...如何使用Websockets连接随机用户?

回答

0

您无法直接使用WebSocket连接两个用户,但可以使用WebRTC数据通道:http://www.html5rocks.com/en/tutorials/webrtc/datachannels/

使用WebSockets,都需要连接到服务器。然后,您的应用程序应向服务器发送消息,指出您正在与哪个聊天室聊天,或向哪个聊天用户发送消息。当用户断开连接时,服务器应通知用户使用公用聊天室或打开的私人聊天,以断开该用户的连接。

服务器是一个负责广播的用户的信息的权利的地方,跟踪哪些用户在聊天室,等等

因此,而不是只发送短信,发送JSON更多的数据对象,如:

{ cls: "join", room: "whatever", nick: "vtortola" } 
{ message: "hi", cls: "msg", room: "whatever" } 

而且服务器应该将事件发送到客户,以及告知用户加入/离开,也是消息。

我写了一个very simple chat,但也许事件处理可能会给你的想法。

0

如果您正在构建一个真正的聊天系统,您应该使用聊天协议,例如XMPP(还有其他协议)。这为您提供了更深入的聊天语义,使用低级WebSocket(这是一种传输协议),并不是一个真正的应用程序级协议。如果您想通过网络聊天,那么您需要XMPP使用HTTP(使用基于HTTP的BOSH)或WebSocket(通过WebSocket搜索XMPP)。