问题标签 [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.

0 投票
1 回答
574 浏览

google-app-engine - Google Channel API - 套接字未在某些客户端上打开

我一直在使用 XMPP 服务和 Channel 服务开发一个简单的聊天应用程序。我已经能够让它在家里正常运行。但是,当另一个用户尝试访问该站点时,不会调用 onOpen 回调方法。我已经使用 FireFox 3.6+ 和 Chrome 从不同的位置尝试过它,它对我有用(在家里,在工作中)。

如果用户从工作地点访问它,是否有可能被系统管理员阻止?或者可能是正在使用的浏览器?我让这个人尝试使用 FireFox 和 Chrome。我不在那里,所以我不确定使用的是哪个浏览器版本。IE 对我不起作用,所以我不关心那个。

非常感谢任何见解。

0 投票
4 回答
2377 浏览

google-app-engine - Google App Engine Channels API 和从客户端发送心跳信号

在 GAE 项目上工作,我们的一个要求是我们希望能够及时确定用户是否离开了应用程序。目前我们有这个工作,但不可靠,所以我正在研究替代方案。

我们现在这样做的方式是我们有一个函数设置在 JS 中运行,该函数使用 AJAX 调用向 GAE 应用程序发送心跳信号。这工作相对较好,但会产生大量流量和 CPU 使用率。如果我们在几分钟内没有听到客户的心跳,我们确定他们已经离开了应用程序。我们还连接了 unload 函数以发送部分消息,再次通过 AJAX 调用。这效果不太好,但大多数时候根本没有。

我们也在使用 Channels API。我注意到的一件事是,当我们的应用程序使用开放频道时,客户端似乎也在以调用http://talkgadget.google.com/talkgadget/dch/bind的形式发送心跳信号。我相信这是在客户端打开频道时加载的 iFrame 和/或 JS 发生的。

我的问题是,我在服务器端的应用程序能否连接到这些对http://talkgadget.google.com/talkgadget/dch/bind的调用并将其用作心跳信号?有没有更好的方法来检测客户端是否仍然连接,即使他们没有主动在客户端做任何事情?

0 投票
1 回答
1319 浏览

google-app-engine - Channel API 的计费是如何完成的?

我选择了 google-app-engine 是因为它的可扩展性,现在我试着了解一旦我发布产品我需要支付多少费用。

我在谷歌应用引擎文档中来回查看以找到问题的答案但找不到。我在“配额”页面中发现了一些细节,我发现我可以免费获得多少以及计费默认配额是多少。

计费页面中,有 CPU 等的编号,包括资源和单元以及它的成本。但是我在哪里找不到每个频道调用/创建的费用等。

我什至无法尝试使用管理控制台中的内容进行计算,因为现在那里的当前数字是 0(因为有 2 个用户是程序员)。

我怎样才能为发布(希望)每天创建大量频道的产品做好准备?

是否有我错过的页面,或者有计算工具?

谢谢!

编辑: Moishe,感谢您提供快速易读的答案。所以这里还有一些问题: 1. 你认为——如果需要的话——我将能够获得更多频道数量的配额吗?我看到有一个特殊的表格要求更多的配额,但我不确定它是否包含 Channel-API 功能...... 2. 你有没有关于“如何有效地使用 channel-API”的帖子?我看到了一些关于每个用户重用令牌的东西。还有更多吗?

再次感谢。

0 投票
1 回答
1485 浏览

google-app-engine - Google App Engine Xmpp chat 如何管理用户的状态?

很容易使用 xmpp 和频道 api 来获得类似...

http://www.dev-articles.com/article/Google-App-Engine-sending-messages-with-XMPP-393002

就是一个例子,尽管我正在努力了解管理用户状态的最佳方式。有这方面经验的人吗?

我阅读了文档http://code.google.com/appengine/docs/java/xmpp/overview.html中的“用户状态”部分我仍然没有掌握它......

0 投票
1 回答
1345 浏览

java - 谷歌 appengine 通道 API (Java) 的问题

我在使用 Channel API 时遇到问题 - 任何帮助都将不胜感激。

我对本地开发服务器上的 API 没有任何问题,但是当我把它放在 apppot 上时,我得到了一个深奥的异常。附上完整的堆栈跟踪,但标题是:

我已经将应用程序简化为一个 servlet 和一个 jsp(均已附加),以确保我没有做任何过于复杂的事情。阅读此论坛上的一些消息和其他消息,这可能是我对令牌与频道密钥的滥用,但我已经尝试了所有我能想到的组合,但无济于事!

servlet 片段:

jsp的片段:

从堆栈跟踪来看,客户端连接到通道正常,并成功发送消息,但是将消息写回通道的 servlet 是失败的位。

非常感谢您的帮助!

代码:

ChannelTestController.java

ChannelTestPage.jsp

日志:

/ChannelTestMessage.do com.google.appengine.api.channel.ChannelFailureException:发生意外错误。在 com.google.appengine.api.channel.ChannelServiceImpl.getExceptionForError(ChannelServiceImpl.java:112) 在 com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServiceImpl.java:68) 在 com.webstersmalley.chessweb.web .ChannelTestController.sendMessage(ChannelTestController.java:74) 在 com.webstersmalley.chessweb.web.ChannelTestController.getChannelTestMessage(ChannelTestController.java:68) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:

0 投票
4 回答
5161 浏览

google-app-engine - XMPP 和 Google App Engine 的 Channel API 之间的差异

我正在开发一个不驻留在 AppEngine 上的应用程序,并且具有聊天功能,可以放入通信 Web 客户端(浏览器 + javascript)和移动客户端(ActionScript)。我正在考虑在 AppEngine 上使用 XMPP 协议(​​然后仅将服务器用于 Google 上的聊天功能,其余部分仍留在我的服务器上)。你告诉我这是否可能?与 Channel API 有什么区别?谢谢

0 投票
1 回答
319 浏览

google-app-engine - 如何跟踪 Channel API 聊天中的活跃用户数量

我正在使用 google Channel API 和 appengine 进行小型聊天。有没有一种简单的方法可以知道有多少用户在聊天中处于活跃状态?

谢谢,大卫

0 投票
0 回答
1865 浏览

google-app-engine - Channel API 关闭一个通道

首先,感谢@Moishe 提供了非常有用的 API。我有一点超时问题,也许有人知道答案。这是我打开频道的方法:

这很好用,我发布了我的消息,它们很快就会发送给其他客户。但是如果我在页面上停留大约 15 分钟,服务器就会失去对我频道的跟踪。在开发中,它会抛出一个错误(我看到这是一个已知的错误: http: //www.mail-archive.com/google-appengine@googlegroups.com/msg44609.html)。但在 prod 中,大约 15 分钟后它仍然会忽略该频道上的消息。

我们通过向页面添加 a 来修复它setInterval(getSomeUrl, everyMinute),但我们宁愿不必这样做。我注意到在 Moishe 对琐事游戏示例的最后一次提交中,他取出了一个 keep-alive。没看懂他是怎么换的,他说的onopen的意思是靠谱的:

http://code.google.com/p/trivia-quiz/source/browse/trunk/src/index.html

更新:服务器端代码是

BaseHandler只是我用于所有 GAE 处理程序的基类,它提供checkUser在用户未登录时进行的重定向,并提供writeTemplate接收内容self.model并将其写入模板的内容。这只是一个概念证明,所以除了上面的内容之外没有缓存或其他任何东西。

0 投票
1 回答
148 浏览

google-app-engine - 调用通道时出错。使用 GO 在 appengine 上创建

我正在使用Channel Api Go Reference中的示例代码。当我运行时,我收到以下错误:

channel.Create:: 调用错误1:调用/channel.CreateChannel 未注册

我找不到任何参考。有人知道吗?

0 投票
1 回答
72 浏览

google-cloud-datastore - 频道的 GAE 仪表板中的错误

我正在使用来自 JS 客户端的 Channel API 连接到 GAE 服务器。即使我的频道客户端能够成功获取令牌并从服务器获取消息,我仍然在 GAE 仪表板中收到以下错误消息。我不确定是否,我错过了什么以及我是否应该担心。


URI - /_ah/channel/disconnected/

计数 - 955

% 错误 - 100%


URI - /_ah/channel/connected/

计数 - 943

% 错误 - 100%


谁能指导我为什么会出现这些错误以及如何解决它们?

谢谢!