即时通讯实施?

时间:2012-07-19 14:43:00

标签: ruby-on-rails web instant-messaging

我想使用Ruby on Rails构建即时消息传递应用程序,但我对实现感到困惑。

IM应用程序(如Facebook上的应用程序)通常如何实现?我想我们可以使用推送服务器(服务器推送到客户端)或轮询(客户端询问服务器),但还有其他方法吗?这两种方法的相应优势是什么?哪一个通常更有效,要求更低?

提前致谢。

2 个答案:

答案 0 :(得分:6)

  1. 轮询:在轮询的情况下,浏览器会定期向服务器发出请求以检查更新。它会增加您的服务器负载。

  2. 服务器已发送事件:server sent events。 服务器发送事件的设计从一开始就是高效的。使用SSE进行通信时,服务器可以随时将数据推送到您的应用程序,而无需提出初始请求。

  3. WebSockets:另一方面,WebSockets需要全双工连接和新的Web Socket服务器来处理协议。

  4. 对于IM最适合的是websocket,因为使用websocket可以进行双向通信。

    使用websocket的IM的类似示例是Applozic聊天SDK。它使用Web套接字进行实时消息传递。

答案 1 :(得分:2)

我不知道Facebook如何实现他们的IM服务,但大多数基于Web的IM客户端使用推送服务器或Jabber客户端。如果您希望用户能够通过他们自己的IM客户端与服务进行通信,而不仅仅是通过Web前端,那么Jabber是很好的;如果您正在对服务器端收到的消息做一些有趣的事情,那么推送是很好的。如今,在任何地方都没有使用轮询。它需要与服务器推送相同的JavaScript支持,但对您的服务器来说需要更多的资源。

为了开始推送,我建议您查看FayeJuggernaut

如果您对Jabber选项感兴趣,请查看JavaScript Jabber Client Library

相关问题