#2216·botkit

问题:处理 WebSocket 终止

作者: paulbhart创建于 2022年5月17日更新于 2022年5月23日

我希望这是一个简单的问题,但需要解释才能得出问题。 我们正在考虑部署使用该框架构建的应用程序,并将其部署到运行在 GKE 上的 Kubernetes 环境中。 我参与了构建和管理 k8s/网络环境的团队,而不是构建实际的聊天应用程序。 我曾经与使用 WebSocket 构建的简单(Hello World 类型)Python 聊天室进行过一些工作,这就是我们发现了一些潜在挑战的地方。 1. 我们使用的全局负载均衡器具有一个超时,基本上是最大会话长度(因此 ping_interval 和 ping_timout 将不会在超时后保持会话开放)。 Google 还明确指出,您不能假设在连接终止之前总是会达到超时,因为可能是软件升级或其他不可控因素。 2. 我们还从 Akamai(我们的流量进入我们的 glb 来自 Akamai)那里得到了消息,您不能假设 WebSocket 总是能够工作(连接升级可能失败或/和 http/websocket 终止超时,就像 Google 那样),因此您需要能够回退到使用长期 http 会话。 https://techdocs.akamai.com/property-mgr/docs/websockets-support#limitations。 这是最近发现的问题。 我确实尝试了查看问题和文档,但没有找到任何明确的信息,但希望我的假设是正确的。 当我写这篇文章时,我们的应用程序团队正在努力使应用程序运行起来,以便我们可以测试一些事情,但希望能从这个社区获得一些指导或基本答案,以确保我们不会走入死胡同。 所以问题实际上归结为我们是否可以使用 WebSocket 和该框架构建聊天应用程序,以便: 1) 处理 WebSocket 终止(即由网络问题或“会话”超时引起的),因此在大多数情况下,会话可以重新建立,而不会对客户产生视觉影响 2) 还要让我们能够管理不再活跃的客户(即提示他们需要继续保持活动,并最终将他们从聊天室中断) 谢谢您的任何指导或帮助,因为我们正在寻求设计和构建我们的聊天系统。 -Paul