0

对,在计划的用户测试前一天,我发现我的 iPad PhoneGapCordova应用程序无法在 iPad 3 IOS 5.1.1 上运行,而在具有相同 IOS 版本的 iPad 2 上却完美运行!我是一个足够愚蠢的人,我“假设”这将保证在较新的 iPad 上工作。吸取教训,我猜。

我有一个 Arduino 设备可以顺利运行 webSocket 服务器。我一直在我的笔记本电脑上使用相同的 Arduino 设备在 Google Chrome 最新开发版本上测试我的应用程序,之前在 iPad 2 上使用最新的 iOS 版本:它就像一个魅力!

在 iPad 端,我正在运行一个使用 webSockets 的 PhoneGap 或 Cordova HTML5 / JavaScript 应用程序。

我不依赖任何第三方网络/网络套接字服务或技术,只是在谷歌 Chrome 上运行的 webkit 网络套接字实现,显然只有 iPad 2..

因此,iPad 3 出现了:WebSocket 连接似乎失败了。我根本不是网络专家,尽管我认为我知道基础知识,并且我尝试使用Wireshark找出握手是否有问题。但似乎连握手都没有。iPad 3 停止在 ARP 请求!

我在下面包含了指向我的 Wireshark(仅限混杂模式,监控模式似乎不起作用)输出及其屏幕截图的链接:


笔记本电脑输出(需要 Wireshark)

iPad 3 输出(需要 Wireshark)


笔记本电脑输出屏幕截图

iPad 3 输出屏幕截图


这是怎么回事?为什么我的 Arduino 设备没有响应来自 iPad 3 的 ARP,却响应来自 iPad 2 的 ARP?

奇怪的是:iPad 3 端的 web socket 实现应该没有问题,我查看了这个 web socket 演示站点:http ://www.websocket.org/echo.html

4

1 回答 1

1

原因可能只是 iPad2 和 iPad 3 上的旧实现(此时最新的 IOS 5.1.1)。在它工作之前,我已经多次更新了 webSocket 服务器代码,因为服务器端使用的协议也较旧。在更新之后,我意识到我从未测试过应用程序的通信部分。愚蠢的!

我有 2 个选择:希望 webSocket 服务器的创建者可以提供一个具有旧协议实现的版本,或者更新到 IOS 6 beta 3,其中有(根据 caniuse.com)完整的 websocket 支持(阅读:他们实现safari mobile 中的正确协议,只是现在...)。我希望我的错误能让其他人不要犯同样的错误:在您的应用程序中使用 webSockets 时,请务必在每次迭代时始终测试通信流程!

于 2012-07-31T15:21:50.610 回答