【问题标题】:Is a chat program based on REST abusing XMPP a good idea?基于 REST 滥用 XMPP 的聊天程序是个好主意吗?
【发布时间】:2020-05-09 06:40:42
【问题描述】:

我打算自己从头开始编写一个客户端+服务器应用程序,该应用程序的要点之一是聊天消息。 我习惯于编写 Rest API,我喜欢它。虽然在other posts 中我读到这对于“聊天消息”用例来说根本不是最佳选择(我当然同意)。

我真的很想编写基于 Rest 的服务器,所以我的想法(虽然希望至少有一些效率 [不要每秒抛出 GET 请求..] 并且仍然保持一定程度的实时用户体验)基本上是:

  • 使用某种 XMPP 来通知客户端,这样他就会知道服务器有话要对他说。 (例如,客户端可以调用类似“1.2.3.4:5678/.../whatsNew”的内容
  • 然后服务器发送更新信息(消息、在线/离线/not_here 状态等)

我完全同意这个想法并不漂亮,我可能应该单独使用 XMPP,但我认为我的方法有一些优势:

  • 我已经知道 Rest 并且这个应用程序不会那么大,这可能会节省很多时间,可能让我有更好的机会完成它。
  • 在我看来,Rest 似乎更受支持,而且基本上在所有设备、浏览器等上都更容易实现
  • XMPP 使用的某些端口可能被阻止(企业防火墙等),因此,使用我的方法,如果由于任何原因 XMPP 无法正常工作,我的前端仍然可以建立连接并接收消息,只是速度更差(刷新或一次例如,如果我以这种方式编程,则每 20 秒)

我很想知道我是否至少在某种程度上是正确的。

如果相关,我打算编写 JavaFX 前端(可能是 + Maven (+Spring?))和 Maven + Springboot Java 后端。

我认为我需要 XMPP 或类似的东西,因为我需要一些实时功能(“用户正在输入”、“用户状态是 dont_talk_to_me”、“消息刚来:”等),并且我不想向服务器发送无用请求的垃圾邮件只是为了得到空的结果。

您如何看待将 XMPP 与 Rest 结合使用的想法

非常感谢您的任何回复!

【问题讨论】:

    标签: java rest connection xmpp chat


    【解决方案1】:

    如果您想要实时,XMPP 听起来是一个合理的选择。您对 XMPP 的不确定性并不完全正确:您可以轻松地在浏览器中使用 XMPP(通过 BOSH,它是 HTTP 长轮询,或者使用 websocket,这应该更有效)并且考虑到它在典型的 Web 端口(80/ 443)它不会被阻止。

    还有许多库(包括用于 Java 的:https://xmpp.org/software/libraries.html)可以加快开发过程(这样您就可以专注于您的应用程序)。

    否则,您将不得不开发完整的接口层,将您想要的内容转换成某种可供用户使用的 REST,而且您似乎仍会使用某种持久连接来获取即时通知。

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 2015-08-22
      • 1970-01-01
      • 2023-01-28
      • 2016-12-10
      • 2013-05-14
      • 2011-01-28
      • 1970-01-01
      • 2016-02-24
      相关资源
      最近更新 更多