在 Android 上使用 Cometd/Bayeux 的系统要求

Posted

技术标签:

【中文标题】在 Android 上使用 Cometd/Bayeux 的系统要求【英文标题】:System requirements for Cometd/Bayeux Usage on Android 【发布时间】:2011-02-10 18:47:30 【问题描述】:

我正在尝试使用 iJetty 在 android 上实现 Cometd/Bayeux 服务器。 Jetty 实现本身可以很好地与 servlet 一起提供静态页面。我正在尝试提高赌注并在手机上创建一个 Bayeux 应用程序,但我遇到了一些麻烦。我可以点击上面有 dojo cometd 脚本的页面,但我无法订阅该频道。当我查看 firebug/chome 开发人员工具时,我看到了一系列持续几毫秒 (~14) 的帖子/获取。但是,当我在普通机器上运行 cometd 应用程序时,posts/gets 会持续几秒钟(~14 秒),然后超时并重新打开连接。第二种情况对我来说是有意义的,因为我理解了 HTTP 中的延续是如何工作的。所以我认为有些东西不允许这些连接挂起并过早地返回一个值并因此关闭连接。我会发布我的源代码,但我不确定要发布什么内容才能发布所有内容......(虽然它是开源的,所以如果你想看看它在http://webtext-android.googlecode.com)。

所以我的问题是,是否有人认为 Android 系统可能会施加一些潜在的限制来阻止这些 servlet 工作? Jetty Bayeux 实现是否对底层系统做出了假设?还是更有可能不知何故我对 ContinuationCometdServelt 的实现不好?我应该注意,来自客户端的所有帖子/获取都返回 200 条 OK 消息,所以我不倾向于认为 Android 系统只是终止连接。

我知道这有点离题,我肯定会尝试做一些与众不同的事情,但任何建议或提示将不胜感激。

【问题讨论】:

+1 因为在 Android 设备上运行 Jetty 是个书呆子:) 试着抓住我的白人和书呆子...... 【参考方案1】:

如果有人发现这一点并遇到类似问题(这适用于所有 cometd 实现,无论主机如何),我发现问题在于使用 Google js 库。出于某种原因,我从 Google (1.4) 加载的 dojo 脚本没有有效的 cometd 实现。我将我的 dojo 脚本切换到 jetty-1.6.23 示例所使用的脚本,它运行良好。

【讨论】:

以上是关于在 Android 上使用 Cometd/Bayeux 的系统要求的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 JavaScript 在 iPhone 上播放声音,但可以在 Android 上播放

Android:在 Android 框架位置 API 上使用 FusedLocationProviderApi 的优缺点是啥?

在android上使用tesseract [关闭]

API 不能在使用 axios 的 React Native 中的旧 Android 设备(Android 7 或更低版本)上工作,但在新设备上工作

在 android 上使用图像精灵

如何在 Android 上使用 Gammaray