2012-03-27 116 views
1

我試圖爲一個項目使用websockets。它需要使用iPad,雖然我似乎無法使它工作。關於ipad上的Websockets,有什麼額外的需要完成?

我已經下載了一段使用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上的終端,並說它已斷開連接。

我我的iPad目前連接到我的Mac通過WiFi,看它是否是路由器,並在終端IP地址顯示方式不同,在255.255.255.100結束不255.255.255.96

沒有人有任何的想法是什麼正在進行,或者我應該怎樣去分類。

+0

當我在Windows機器上調試這樣的東西時,我使用Fiddler(http://www.fiddler2.com/fiddler2/)。有什麼可以用來查看正在發送的請求/響應消息,然後發佈它們以幫助獲得更多信息? – 2012-03-27 22:11:17

回答

5

真是一團糟。在that pageproject source,Flynsarmy表示他正在使用PHPWebSocket,而事實上他正在使用php-websocket-server。 (我已經提交了一個評論,指出他的網頁上有錯誤)。

這兩個PHP WebSocket的項目有很大的不同:

  • PHPWebSocket是一個比較老的和無人維護的項目,只支持WebSocket協議的較舊的Hixie(原型)的版本。
  • php-websocket-server是一個較新的但不太知名的項目,它只支持最新的HyBi/IETF(標準)協議版本。

你的問題是這樣的:Safari瀏覽器的桌面和iOS目前支持年長Hixie版本,它不會與基於php的WebSocket的服務器上的任何項目工作的協議。

由於可以從初始握手標頭中檢測到客戶端/瀏覽器版本,因此使WebSocket服務器可以很容易地支持舊版本和新版本的協議(並且大多數語言都有實現)。然而,由於某些原因,缺乏支持這兩者的基於PHP的服務器。

+0

您在哪裏發現Safari Desktop和IOS當前支持哪種協議?因爲我認爲我在這裏遇到了同樣的問題。我的HTML5應用程序似乎在谷歌瀏覽器中完美工作,但不在Safari桌面和IOS上。我知道websocket服務器端的協議是最新的,「EVERYONE」達成了一致。如果這是同樣的問題,我很生氣的蘋果沒有實施最新的(和最終)協議...... – 2012-07-31 13:17:15

+0

我知道,因爲我測試了他們作爲開發noVNC/websockify的一部分。如果您可以讓服務器打印握手信息,您可以從握手中瞭解到正在使用哪種特定版本的有線協議。請參閱維基百科頁面的底部,瞭解每個桌面瀏覽器支持的版本:http://en.wikipedia.org/wiki/WebSocket IETF 6455協議僅在2011年11月完成。Safari 5.X和iOS 4.X出去的時間更長。據說Safari 6有最新的協議版本,但我沒有測試過。 – kanaka 2012-07-31 19:55:57

+0

感謝您的信息,似乎只有邏輯。我發現這確實是個問題......根據caniuse.com/websockets的說法,它在iOS 6中似乎是「全力支持」(閱讀:終於實現了正確的協議)。對於這些事情,蘋果真的很尷尬。 – 2012-08-01 10:51:23

相關問題