我在使用 App Engine 通道 API 时遇到了间歇性问题。在大多数情况下,也许 90% 的时间里,一切正常。但是剩下的 10% 的时间我得到一个不可用的频道。看了几个月的代码,我坚信这个问题不是由于逻辑错误造成的。我所说的不可用通道是指即使客户端成功连接到它,服务器也无法向它发送消息。客户端和服务器上涉及的大部分操作都成功完成:
- 在服务器上,我创建了一个具有会话唯一的新客户端 ID 的通道
- 客户端获取相应的令牌并连接到它
- 在客户端,在通道套接字上调用 onOpen()
没有成功的一件事是为这些有缺陷的通道调用 /_ah/channel/connected。我已经尝试了几十种可能的解决方法,但都没有成功。现在我通过优雅地重试直到成功来处理这个问题,但是如果没有这些技巧,它会非常好。