即时消息实现



我想使用RubyonRails构建一个即时消息应用程序,但我对实现感到困惑。

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

提前谢谢。

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

  2. 服务器发送事件:服务器发送的事件。服务器发送的事件从一开始就被设计为高效的。当使用SSE进行通信时,服务器可以随时向您的应用程序推送数据,而无需发出初始请求。

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

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

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

我不知道Facebook是如何实现他们的IM服务的,但大多数基于web的IM客户端要么使用推送服务器,要么使用Jabber客户端。如果你希望用户能够通过自己的IM客户端而不仅仅是通过网络前端与服务进行通信,那么Jabber是很好的;如果您正在对服务器端接收到的消息执行一些有趣的操作,那么推送是很好的。如今,民意测验的使用还没有那么广泛。它需要与服务器推送相同的JavaScript支持,但对您的服务器来说资源消耗要大得多。

对于推送的入门,我建议你看看王菲或朱格纳特。

如果您对Jabber选项感兴趣,请查看JavaScriptJabber客户端库。

最新更新