1

我在 SDK 1.6.5,Python 2.5

当我启动我的开发服务器并在 127.0.0.1 访问我的频道测试页面时,一切正常 - 生成令牌并传递到前端,套接字打开,接收到客户端连接的 ping,我的应用程序向客户端发送一条消息,它被接收.

如果我重新加载页面:
- 我的日志中没有显示断开连接 ping(应该吗?)
- 生成新令牌(OK)
- 前端 js 记录使用新令牌打开的套接字(OK)
- 没有收到客户端连接的 ping
- 。 ..我的服务器端代码现在不知道这个套接字是打开的并且不知道如何向客户端发送消息

我是否误解了这里的正确流程?

如果我移动+重新加载页面,它是一样的。我必须重新启动开发服务器才能让一切恢复正常。

使用 djangoappengine:

inbound_services:
- warmup
- channel_presence

handlers:
- url: /_ah/channel/.*
  script: djangoappengine/main/main.py
4

1 回答 1

1

如果您使用相同的客户端 ID,这或多或少是预期的。基本原因是:给定的客户端 ID、应用 ID 和版本映射到特定的 XMPP 端点。如果客户端在短时间内(例如,几秒钟)离线,XMPP 前端不希望向客户端发送断开/连接通知。页面刷新基本上就像丢失并重新协商网络连接,因此这种情况被视为暂时断开的连接,并且不会发送断开/连接。

如果您确实需要在页面刷新时断开连接,您可以通过在每个页面请求上调用 create_channel 时使用不同的客户端 ID 来解决此问题。

于 2012-05-27T22:30:52.990 回答