问题标签 [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 回答
646 浏览

google-app-engine - Channel API:当令牌过期时,存在会收到断开连接的通知吗?

我在 Channel API 上构建了一个应用程序,使用通道存在 url 来跟踪连接的客户端。

当客户离开时,我在 /_ah/channel/disconnected/ 收到一个 ping。如果在前端客户端连接时令牌过期,我会收到 ping 吗?

0 投票
1 回答
5362 浏览

google-app-engine - 谷歌应用引擎通道 api 限制

我已经使用 Google 应用引擎大约 2 年了,我很喜欢它。我的任务是制作游戏,我想使用 GAE 作为后端。据我了解,Channels API 适用于此类应用程序。我得到了井字游戏演示,并注意到每个客户都有自己的频道。在仔细阅读文档后,我注意到这就是该系统的使用方式。然后我检查了文档中的配额和限制,然后......被摧毁了。GAE 最多可以让我每分钟创建 60 个新频道。这意味着我每分钟只能拥有 60 个新用户。这是非常有限的,我不能使用这个 API。

所以我的问题是:

  1. 我做得对吗(1 个客户 = 1 个频道)
  2. 通道 API 是用于更新多个客户端关于游戏当前状态的最佳 API。
  3. 真的不能只有60!?我可以为每分钟支付更多费用吗?
0 投票
2 回答
2227 浏览

google-app-engine - Google App Engine 中的最佳渠道池化方法

似乎使 GAE Channel API 在财务上可行的唯一方法是实施某种池化机制(一位高级应用引擎产品经理甚至在我向他们发送有关过高价格的电子邮件时告诉我这一点)以重用尚未使用的渠道已到期。

我一直在思考实现通道池的方法(地点),但我想到的每种方法都有一些非常严重的缺点。

Servlet 的静态内存——很好,但是当新的 VM 实例打开和/或客户端从一个 VM 传递到另一个 VM 时,会丢弃相当多的开放通道。

Memcache——至少内存可以从所有虚拟机全局访问,但现在由于不活动和内存压力,放弃一个非常可行的通道的可能性可能更大。

后端实例——就可靠性而言,这可能是最好的选择,但现在运行后端的费用将首先耗尽实施池的所有节省!

有没有更好的地方/方式来跨我缺少的虚拟机实现通道池,或者我是否不必要地挂断了我的选项的缺点?我真的希望有,或者看起来我的应用程序将不得不恢复轮询(在我的初步指标中看起来稍微便宜一些)。

0 投票
2 回答
7283 浏览

java - Google App Engine 频道 API

我正在尝试学习 GAE 的通道 API(使用 Java),但我不知道从哪里开始。

我浏览了Channel API Overview (Java),但出于简洁的目的,那里发布的代码并不完整。

而且由于我是新手,如果有完整的示例代码可用,那将非常有帮助。

谢谢, 史瑞

0 投票
1 回答
834 浏览

google-app-engine - 使用新的频道创建限制

谷歌应用引擎最近似乎将频道创建的免费配额从每天 8640 个大幅减少到 100 个。对于我不愿意使用付费计划的爱好项目,我将不胜感激有关优化频道创建的一些建议。

  1. 文档中特别提到每个频道 ID 只能有一个客户端。如果有办法解决这个问题会有所帮助,即使它仅适用于一台计算机上的多个客户端(例如多个选项卡)

  2. 我突然想到,我可以通过反复向服务器发送 XHR 请求来检查新消息来模拟通道功能,从而绕过限制。但是,我担心这种方法可能太慢了。是否有任何现有的图书馆遵循这一原则?

0 投票
1 回答
2667 浏览

google-app-engine - 使用 Google App Engine 的大型多用户实时应用程序

我正在使用 Google App Engine (Python) 构建一个多用户实时应用程序,它看起来像 Facebook 直播插件:https ://developers.facebook.com/docs/reference/plugins/live-stream/

这意味着:同一网页上的 1 到 1 000 000 个用户可以执行立即通知其他所有人的操作。这就像一个群聊,但有很多人......

我的问题:
- App Engine 是否能够扩展到这种数字?
- 如果是,你会如何设计它?
- 如果没有,您有什么建议?

现在,这是我的设计:
- 我正在使用 App Engine Channel API
- 我将每个连接的用户存储在内存缓存中
- 每次执行操作时,都会将通知任务添加到任务队列
中 - 任务在于检索所有用户从 memcache 向他们发送通知。

我知道我的瓶颈在于任务。每个人都通过相同的任务/请求得到通知。现在,对于 30 个连接的用户,它持续大约 1 秒,所以对于 100 000 个用户,你可以想象它需要多长时间。

你会如何纠正这个?

非常感谢

0 投票
2 回答
723 浏览

google-app-engine - AppEngine 通道 API 的 Amazon EC2 等效项是什么?

如果有的话。IE。如果有一些只是大致相似的东西,如果你能描述一下什么是限制和差异,我将不胜感激。

0 投票
2 回答
301 浏览

google-app-engine - 在 AppEngine Channel API 中防止丢失消息

在 AppEngine Channel API 中,通道会在 2 小时后自动关闭。我们通过在 onError 事件中重新加入频道来处理这个问题。

如果在频道重新连接时发送消息,是否有可能错过消息?

我们的场景:我们有一个预约调度系统,通过 API 在别处预约预约。我们使用该频道在日程安排上显示新的约会。但我担心如果在频道关闭并重新连接期间预订某些约会可能会错过。Channel API 是否可以防止这种情况发生?

0 投票
1 回答
202 浏览

google-app-engine - 应用引擎渠道部署

我创建了一个拥有约 50 个用户的应用程序。我正在尝试使用通道 API,但在测试消息发送时遇到了问题。我将令牌保存到数据库中,因此如果用户打开具有相同界面的多个选项卡并且我有一个 servlet 可以在令牌过期时重置我的令牌,我可以使用相同的令牌。

在我重新部署我的应用程序或更改我的应用程序版本之前,它工作正常。我停止接收消息。如果我尝试使用旧应用程序版本令牌打开一个频道,它不会抛出错误或任何东西,它会打开它,但我仍然没有在该频道上收到消息。
如果我重置我的令牌,它会再次正常工作。

有谁知道这个错误的解决方案,或者以前有人有过吗?我经常在人们工作时部署,所以我不能忽视它。

我最好的猜测是ChannelServiceFactory.getChannelService()返回一个不同的实例,ChannelService所以当我调用channelService.sendMessage("id","message");它时,它会将它发送到不同的通道。

0 投票
2 回答
236 浏览

java - 通过 GAE 进行客户端通信

通过 GAE 在 Android 应用程序(本机应用程序)和桌面应用程序(C#/Java 客户端)之间进行通信的最佳方式是什么?我发现的一种方法是 Channel API。不幸的是,我发现除了 Javascript 之外没有客户端脚本支持 Channel API。另一种方法是创建一个静态类并通过这些静态变量进行通信。

这就是我想要实现的目标:

  1. 我想要一个 Android 应用程序向 GAE 发送消息。
  2. 此消息应由我的 PC 应用程序(C#/Java 客户端)检索
  3. PC 应用程序应返回对此消息的响应
  4. PC 响应应发送到移动应用程序。

实际上,我正在尝试从我的手机上执行 windows 命令提示符上的命令。