【问题标题】:Instant messaging implementation?即时通讯实现?
【发布时间】:2012-07-19 14:43:00
【问题描述】:

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

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

提前致谢。

【问题讨论】:

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


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

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

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

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

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

    【讨论】:

      【解决方案2】:

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

      要开始使用推送,我建议查看 Faye 或 Juggernaut。

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

      【讨论】:

        猜你喜欢
        • 2012-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多