【发布时间】:2017-04-17 16:51:52
【问题描述】:
我正在尝试创建一个 Slack 机器人,并计划通过 Slack 应用程序目录分发它。现在保持我的机器人可用,我将不得不使用rtm.start API。现在,如果在任何时候我的服务器机群有 100,000 个(如果我开始托管机器人,可以达到 1 亿个)web-sockets 连接。我正在为我的服务器寻找干净的设计,它应该是可扩展的,最重要的是它应该能够让我的机器人始终可用(即使在服务器重新启动期间)。
这是我的想法:
- 从 1 台以上的服务器重复连接到同一个 Slack 团队(如何?将 OAuth 令牌放入数据库并在建立连接时更新计数器?) 重新扫描所有预先存在的连接并再次建立连接。
- 在部署期间一次只重启一台服务器
但是我不确定如何在服务器重新启动后重新建立 WebSocket 连接。当所有机器人都离线时网络中断事件会发生什么,重新建立预先存在的连接的有效方法是什么。
我看过这个SO post,但不幸的是它没有那么详细/有用
【问题讨论】:
-
如果您不需要在 Slack 中出现,您可能需要查看Events API。它具有几乎相同的功能(例如,您可以创建聊天机器人),但可以使用简单的 HTTP POST,因此您无需为每个机器人管理 websocket 连接。
-
感谢您抽出时间回复@ErikKalkoken。我知道事件 API 并且能够用它创建成功的原型。但是对我来说,机器人的存在非常重要:(
标签: websocket bots slack-api slack