ipad 上的 Websockets,还有啥需要做的吗?
Posted
技术标签:
【中文标题】ipad 上的 Websockets,还有啥需要做的吗?【英文标题】:Websockets on ipad, is there something extra that needs to be done?ipad 上的 Websockets,还有什么需要做的吗? 【发布时间】:2012-03-27 17:55:42 【问题描述】:我正在尝试将 websockets 用于项目。它需要使用 ipad,但我似乎无法让它工作。
我已经下载了使用 phpwebsocket http://www.flynsarmy.com/2012/02/php-websocket-chat-application-2-0/ 的这段代码的副本。接着设置服务器。我让它在计算机,不同的浏览器上工作,没问题。
然后我想在我的 ipad (ios 5.1) 上测试它,但它不起作用。所以我确保 websockets 在 ipad 上工作,我发现他们确实做到了 [link]http://websocket.org/echo.html。
然后我进一步查看它,发现它正在尝试连接,但在大约 15 秒后断开连接,我假设超时。它显示在我的 Mac 上的终端中,说它已断开连接。
我目前正在通过 wifi 将我的 ipad 连接到我的 mac 以查看它是否是路由器,并且在终端 IP 地址显示不同,以 255.255.255.100 而不是 255.255.255.96 结尾
有没有人知道发生了什么,或者我应该怎么做才能对其进行排序。
【问题讨论】:
当我在 Windows 机器上调试这样的东西时,我使用 Fiddler (fiddler2.com/fiddler2)。有没有类似的东西可以用来查看正在发送的请求/响应消息,然后发布它们以帮助获取更多信息? 【参考方案1】:真是一团糟。在that page 和project source 上,Flynsarmy 表示他正在使用PHPWebSocket,而实际上他正在使用php-websocket-server。 (我已经在他的页面上提交了一条指出错误的评论)。
这两个 PHP WebSocket 项目完全不同:
PHPWebSocket 是一个相对较旧且无人维护的项目,仅支持较旧的 Hixie(原型)版本的 WebSocket 协议。 php-websocket-server 是一个较新但鲜为人知的项目,仅支持较新的 HyBi/IETF(标准)版本的协议。您的问题是:Safari Desktop 和 iOS 目前支持 旧的 Hixie 版本的协议,该协议不适用于任何基于 php-websocket-server 的项目。
制作同时支持旧版本和新版本协议的 WebSocket 服务器相当容易(大多数语言都有支持的实现),因为它可以从初始握手标头中检测到客户端/浏览器版本。但是由于某种原因,缺乏支持两者的基于 PHP 的服务器。
【讨论】:
您在哪里找到 Safari Desktop 和 IOS 当前支持的协议?因为,我想我在这里遇到了同样的问题。我的 HTML5 应用程序似乎在 google chrome 中完美运行,但在 Safari 桌面和 IOS 上却不行。我知道 websocket 服务器端的协议是最新的,是“每个人”都同意的。如果这是同样的问题,我对 Apple 没有实施最新的(AND FINAL)协议感到非常生气...... 我知道是因为我在开发 noVNC/websockify 的过程中对它们进行了测试。如果您可以让服务器打印握手,您可以从握手中知道正在使用哪个特定版本的有线协议。有关每个桌面浏览器支持的版本,请参见***页面的底部:en.wikipedia.org/wiki/WebSocket IETF 6455 协议仅在 2011 年 11 月完成。Safari 5.X 和 iOS 4.X 的发布时间要长得多。 Safari 6 应该有最新的协议版本,但我还没有测试过。 感谢您的信息,这似乎是合乎逻辑的。我发现这确实是问题所在……根据 caniuse.com/websockets 的说法,似乎在 IOS 6 中,它们具有“完全支持”(阅读:最终实现了正确的协议)。在这些事情上落后真的很糟糕,Apple。以上是关于ipad 上的 Websockets,还有啥需要做的吗?的主要内容,如果未能解决你的问题,请参考以下文章
带有cordova的Websockets在ipad上不起作用
ipad mini 用啥音乐播放器最好、还有自带的播放器,听歌总是有嘶哑声...求解