问题标签 [channel-api]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Channels and TaskQueues in Google App Engine (client debugging)
I'm trying to build and debug my first GAE application and have already benefited from the awesome support of Stackoverflowers to get where I am in having tasks being processed on the default queue. Thanks!
However, I wanted to use Queues to demonstrate how you would do some 'long' work in the background. My idea was:
- Receive a request to process a large file.
- Store the file and enqueue a task.
- Return the response.
- Process the file on the background.
- Let the client know, via a Channel, that the work is done!
I have all this working but for one problem. On my development server the Task Queue doesn't seem to process tasks in the background. To simulate long running work I just popped a sleep in there.
It appears that the GAE development server is single threaded. It doesn't respond at all until the item has been processed off the queue? Is this assumption right? Any ideas?
Thanks
Adding code exanples:
google-app-engine - Google App Engine Channel API 和 Chrome 扩展
在圣诞节期间,我实现了一些代码来使用通道 API 打开我的 App Engine 应用程序的通道,并且运行良好。
最近回了代码,发现坏了,问题似乎出在talkgadget上,客户端代码试图加载到frame中。
我在 12 月 21 日对 /_ah/channel/jsapi 返回的代码进行了快照,并将其与今天的代码进行比较。
当旧版本尝试获取talkgadget.google.com/talkgadget/d?token=[my-token] 时,它被硬编码为使用http。明智的是,代码后来被更改为检查 document.location 中页面的协议并适应使用 https 的情况。现在的问题是,当在 chrome 扩展中运行时,它会抓取 chrome-extension: 作为协议,并且自然通道无法在扩展中打开。
将背景页面的基础设置为我的应用程序 URL 不会更改 document.location,尽管我有一些模糊的概念认为它应该这样做。(不确定标准是怎么说的。)
有解决方法吗?一种想法是创建从我的站点加载的我自己的 iframe,但随后它将嵌套实际的频道 iframe,使事情变得复杂。
我想知道 Moish 或 App Engine 团队的其他人是否可以对此发表评论。看起来这是一个错误,代码应该通过测试协议并搜索基本标记作为替代方案,或者提供某种方式通过 javascript 对象进行配置。
google-app-engine - 强制 Channel API 轮询
希望 Moishe 看到这一点:在开发模式下,通道 api 客户端 (javascript) 诉诸轮询……并使用非常快的轮询速率。在四处寻找之后,我发现如果我设置
我可以控制投票率。我想知道的是:
- 我如何知道客户端是否/何时进入生产中的“轮询模式”?
- 是否可以强制客户端进入“轮询模式”?
- 如果我达到应用的频道配额会怎样?/_ah/channel/ 端点会完全停止工作吗?还是会诉诸民意调查?
-谢谢
google-app-engine - 为什么 GAE ChannelAPI Socket.open() 失败?
我们在我们的网站上使用 Channel API,它在桌面和移动网站(iPhone/Android)上运行良好。但是相同的代码在我们的移动应用程序(使用 Appcelerator Titanium/jQTouch/WebView 构建)中的 Socket.open 命令上静默失败。不幸的是,无法在 Titanium/WebViews 中调试 JavaScript。造成这种情况的可能原因是什么?
JavaScript 客户端的兼容性要求是什么?在我们的测试中,它不适用于 S60V5 浏览器(诺基亚 N97/5800)。
'close' 命令存在一个错误,需要手动删除 iframe,它是否已在最新版本 (1.4.2) 中修复?
谢谢。
javascript - 试图理解 Youtube Leanback 的实现
在 youtubeleaback 新应用程序中,我可以使用我的 android 手机控制计算机上的全屏浏览器。我试图理解 - 它是如何工作的?
例如,当我按下“播放”时,电影开始播放。现在,当我按下播放键时,它可能会向 youtube 服务器发送“HTTP Post”;youtube 服务器如何将“播放”请求推送到浏览器?有推送通知?可能不是,因为它不是一个可靠的服务,也许这个应用程序是用 GAE Channel-API 编写的,然后我的浏览器和服务器之间有一个持续的通信......
有什么线索吗?
iphone - 是否有可能为 iphone 提供 GAE 通道 API?
我想尝试在我的 GAE 应用程序和 iphone 之间使用通道 API。我不知道从哪里开始......我应该尝试使用运行 javascript 的 UIWebView 吗?
javascript - 通道 API 套接字在 Firefox 中首次加载时未打开
我有一个使用 App Engine 和通道 API 构建的 2 人纸牌游戏应用程序。在大多数情况下它工作得很好,但我在 Firefox 中遇到了一个奇怪的问题。
当我在 Firefox 中进入游戏时,我调用了 socket.open,但没有任何反应。我从来没有收到 onopen 回调,也没有收到任何我知道应该在路上的消息。奇怪的是,如果我刷新页面,频道就会正确打开!这只发生在 Firefox 中,所有其他浏览器都可以正常工作。另外,如果我打开了 Firebug,则通道会正确打开。所以,看起来这可能是一个时间问题。一些更相关的细节:
- 引用 jsapi 的 script 标签不在 head 标签内,它在 body 内。
- 我在 jquery 的 $(document).ready 回调中调用 socket.open。
- 我在错误控制台中没有看到任何脚本错误。它只是默默地失败。
那么,有什么想法吗?如果不是为了修复,那么至少有人知道我如何从 Channel API 获取日志信息,我可以在混淆的源代码中看到它记录了不同的内容,但无法弄清楚如何获取日志消息。
iphone - GAE 用户身份验证不适用于 iphone 的 channel_API
我有一个 GAE 应用程序可以在我的浏览器上正常运行,但是当我尝试在 iphone 上运行相同的网站时无法识别用户。我正在使用当前的 user_id 通过通道 API 发送消息
这是我的 Python GAE 应用程序中的代码——这里有两个定义——send_update 和 send_update_iphone——正如你所见,它们完全相似!两者都在类 Updater() 中:
现在,我从不同的地方给他们打电话,我打电话给第一个
第二个
当我使用该应用程序时,第一个效果很好 - 它打开了频道,并毫无问题地根据消息更新它。当我从 iphone 访问应用程序时(登录到我的 gmail 时),我得到:
“NoneType”对象没有属性“user_id”
iPhone 端的一些细节: - 我从 UIWebView 访问网站 - 我可以看到我已登录到我的谷歌帐户
有人可以帮忙吗?我试过任何我知道的东西>>>谢谢!
更新:我检查了 cookie(感谢 Calvin)并看到在浏览器上我得到了一个 cookie,但在 iphone 中我没有得到一个 cookie(我使用NSLog(@"Cookies: %@", [request1 responseCookies]);
)
我现在知道在浏览器中它可以工作,因为我从浏览器进入 myapp.appspot.com 页面,所以这就是它有 cookie 的原因,而从 iphone 我 POST 到 myapp.appspot.com,但我从来没有进入页面本身,所以服务器永远不会向我发送 cookie。这很有趣,但我仍然不知道如何解决......
python - 使用任务队列中的 GAE 通道
几天来,我一直在尝试使用channel.send_message
GAE 中的 API(通过 Python)在 TaskQueue 进程完成时向客户端发送消息。它只是行不通。
我可以从另一个请求中使用 send_message,它工作正常并被接收。但是从 TaskQueue 调用 send_message 时什么也没有。
我已经在本地尝试过并完全部署到 GAE。这不是受支持的方案吗?
java - 即使消息通过,GAE/J Channel API 异常?
我在应用程序初始化期间通过一系列 ajax 调用打开了一个通道:
小服务程序:
然后将令牌返回给 javascript,用于:
我收到此错误:
警告:/_ah/channel/dev com.google.appengine.api.channel.dev.LocalChannelFailureException:找不到应用程序密钥 null 的通道。
频道创建部分很简单,所以我不明白问题出在哪里。
System.out.println (channelToken);
返回类似的东西
通道--rrmk8i-100002139544068
(100002139544068 是我用来创建频道的 uid),所以它似乎返回了一个真实的令牌。此外,channelService.sendMessage(msg);
(使用与以前相同的 uid),发送消息没有任何问题。
有谁知道为什么会这样?我正在使用 eclipse 3.5.2、GAE/J 1.4.2 和 ubuntu 10.10
谷歌搜索该异常,我在这里只找到了一个讨论: http ://groups.google.com/group/google-appengine-java/browse_thread/thread/19f250b1ff0e4342
但是更改var channel = new goog.appengine.Channel(token);
为var channel = new goog.appengine.Channel(uid);
并没有解决任何问题(据我所知,它不应该)