【问题标题】:ReactJS Messaging ServiceReactJS 消息服务
【发布时间】:2017-12-13 22:08:21
【问题描述】:

背景:

我正在使用 AWS cognito、dynamo 和 S3 构建一个 reactJS 应用程序。该应用程序基于招聘部门,雇主和雇员可以分别发布和查看工作。当员工申请工作时,雇主可以查看员工资料并决定是否向他们发送消息。员工和雇主通过现场消息服务进行交流。



问题:

促进用户聊天的最佳方法是什么?

即什么是存储消息并在用户有新消息时通知用户的好方法。

我们目前的方法是在网站上设置一个 setTimeout() 并检查新消息,但这会非常低效,所以我正在寻找一些指导。

我想尽可能多地留在亚马逊基础设施内,但我愿意接受所有建议。

【问题讨论】:

  • 您可能对 websocket 感兴趣。 socket.io 是一个不错的框架
  • @Héctor 我正在查看那个确切的站点,它是保存消息的数据库吗?或者它是如何工作的,从他们的网站上不是很清楚
  • 例如,如果人们有 10 次聊天并且我们需要他们持续较长时间(例如一年),这是否会运作良好?
  • Socket.io 管理事件,但不管理消息持久性。因此,在您的服务器端,当您收到“new_message”事件(或类似事件)时,您需要从该事件中读取消息,并将其存储在某种持久性中。

标签: javascript performance reactjs amazon-web-services chat


【解决方案1】:

我目前正在为我工​​作的一家初创公司构建类似的东西。我们的 React 应用程序由 node.js 服务器提供服务,而 API 后端由带有 drf 的 django API 提供。与您的用户聊天案例一样,我们需要处理一些到达前端的实时数据。

我们的方法

解决方案可以分为服务器间和服务器-浏览器实时通信:

我们使用 redis(确切地说是 aws elasticache)作为发布/订阅消息队列,将传入的数据从 API 后端推送到 nodejs 服务器。具体来说,每当由于HTTP POST 调用(即在您的情况下是发送到服务器的消息)而创建了相关模型的实例时,我们都会在特定于的通道上发布JSON 序列化信息关注的参与者。

在 node.js 服务器上,我们订阅感兴趣的频道并从后端实时接收信息。然后我们使用socket.io 提供到前端的 websocket 连接,这可以很容易地与 React 集成。

这种方法的局限性

您不能简单地将您的 React 应用程序作为来自 S3 的静态网站提供服务,而必须依赖 node x React 方法。 react-boilerplat(我认为是 Max Stoiber)是一个很好的起点。

此外,您还可以端到端使用 websockets。我们使用这种方法,因为我们的数据源不是浏览器,而是受限设备。

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2019-09-20
    • 2015-02-02
    相关资源
    最近更新 更多