Ale*_*exA 2 python google-app-engine channel-api
问题描述:通道消息没有返回到ajax脚本.最初,消息被传递到clietn端,但是当我在js中设置更大的超时时出现问题:
goog.appengine.Socket.POLLING_TIMEOUT_MS = 5000; //每5秒轮询一次
我添加了一个非常基本的Python代码来测试Channel API是否适用于我的Google App Engine应用程序.
index:
token = channel.create_channel(CHANNEL_NAME)
channel.send_message(CHANNEL_NAME, message)
#token is passed to template
additional_view:
#is another view, trigger manually from browser after index
from django.utils import simplejson
channel.send_message(CHANNEL_NAME, simplejson.dumps(data))
Run Code Online (Sandbox Code Playgroud)
在客户端,我有一个带有onMessage代码的常规js.
问题是没有消息返回到客户端请求.他们都是空的轮询ajax(如Firebug中所见).在应用程序日志中,我可以看到创建了通道:
"使用客户端ID广播创建频道令牌频道-2382918168-broadcast" ,稍后发送消息,但带有注释:
来之间这些要求:
INFO 2011-08-03 14:33:32,000 dev_appserver.py:4248] "POST /_ah/channel/connected/ HTTP/1.1" 404 -
INFO 2011-08-03 14:33:33,780 dev_appserver.py:4248] "POST /_ah/channel/disconnected/ HTTP/1.1" 404 -
Run Code Online (Sandbox Code Playgroud)
**....消息文本...通过密钥(广播):没有客户连接***
通道/消息如何在更深层次上运行?如果没有客户端连接或新连接客户端重新启动邮件,邮件是否会丢失?如果由于某种原因我创建了一个具有相同名称的频道,它会破坏它内部的未传递消息吗?
远离设置POLLING_TIMEOUT_MS高于1.5秒,dev_appserver将假定您已断开连接.
它不能通过生产中的轮询工作,因此您不必真正担心超时.
编辑:刚刚看到罗伯特的评论; 如果我在Chrome/Safari/Firefox中将轮询设置为3秒,我个人甚至会遇到问题.我现在只?disable_channel=true在我的应用程序上有查询字符串,这样我就可以运行它们而不用CPU使用情况设置我的笔记本电脑.
| 归档时间: |
|
| 查看次数: |
890 次 |
| 最近记录: |