gpt4 book ai didi

amazon-web-services - 使用 WebSockets 和 AWS 构建 Web 应用程序

转载 作者:行者123 更新时间:2023-12-04 08:01:10 28 4
gpt4 key购买 nike

我正在尝试创建一个协作 Web 应用程序,多个用户可以在其中一起处理各种(共享)项目。到目前为止,我有一个 JavaScript 客户端和一个本地 jWebSocket服务器。

为了在部署时保持可扩展性,我想到了两种选择:

选项1

我可以用 AWS IoT而不是多个 jWebSocket 服务器。发布项目的更改很容易,我只需要发布到例如/project/{project-id} .但是传统的请求-响应机制是如何工作的呢?

Sketch of option 1

问题:通过发布到不同的主题(例如 /server/1),可以访问处理请求的 EC2 实例。但是当 JS 客户端连接到 AWS IoT 时,它不知道要向其发送请求的任何 EC2 实例。我如何将每个客户端分配给一个实例/主题?

选项 2

AWS Application Load Balancer 后面的多个 EC2 实例上运行 jWebSocket 服务器.平衡器会简单地将每个客户端分配给一个服务器,传统的请求-响应流不会成为问题。但是插入变革呢?

Sketch of option 2

问题:因为每个服务器都有自己的一组连接的客户端,所以它不能将更改推送到连接到另一台服务器的客户端。

评论

  • 混合使用 jWebSocket 发送请求和 AWS IoT 接收事件似乎是一个草率的解决方案。
  • 我假设我可以以编程方式调整每个认知身份的 IoT 策略,以允许/拒绝订阅特定项目。
  • 由于 high latency,使用 AWS Lambda 和完全放弃服务器不是一种选择。由 Lambda 介绍(如果您有不同的体验,请分享)。


  • 相关文章

    IoT request response protocol

    感谢您在这个问题上给我的任何想法。

    最佳答案

    我懂了。 this question中的第一个建议为我指明了正确的方向。该解决方案允许所有客户端保持直通WebSocket连接到他们最初连接的服务器,而无需订阅特定主题。

    Servers push messages for unknown clients to the server in charge.

    它的工作原理如下:

  • 当客户端连接到服务器时,服务器订阅客户端的 channel
  • 如果服务器需要向未连接的客户端发送消息,则会将该消息发布到客户端的 channel
  • (你猜对了)订阅 channel 的服务器然后可以代表第一个服务器处理消息

  • 图中“Pusher”描述 this SaaS ,但当然可以被任何其他消息服务取代。

    关于amazon-web-services - 使用 WebSockets 和 AWS 构建 Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41854947/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com