2013-08-06 127 views
3

我使用Chrome打包的應用程序構建了一個Web服務器。我重複看到的問題是,chrome.socket.accept()和chrome.socket.write()不會調用它們的回調函數。如果請求速率小於每秒1個請求,它通常會或多或少地可靠工作。如果我高於這個水平,那麼我會看到錯誤或缺少回調。使用chrome.socket構建Web服務器API

我用谷歌樣本「webserver」應用程序做了類似的測試(https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver)。它有同樣的問題。在Web服務器停止響應之前,通常需要的請求少於100個。重現此問題的最簡單方法是將Chrome瀏覽器用作客戶端,並按住F5鍵幾秒鐘。

這將是可取的有一個示例應用程序,演示如何使用chrome.socket構建可靠的Web服務器。到目前爲止,我嘗試了幾種不同的解決方法來監視應用程序本身的情況,並在套接字停止工作時重新啓動套接字,但這並不容易,因爲沒有可靠的方法來檢查連接的狀態或最後一個操作的狀態,因爲回調不是被解僱。我嘗試使用getInfo()方法,但無論情況如何,它總是返回「connected = true」。

我在Windows 7和Chrome OS(Chromebook)上看到了這一點。

+0

澄清:您在自己的服務器中看到與Github上的服務器代碼示例相同的速率/失敗速度嗎?如果它是相同的,Chrome瀏覽器處理服務器套接字的方式似乎是一個錯誤。如果它們不同,它仍然看起來像一個錯誤,但在更糟糕的情況下可能會加重問題。 – apsillers

+0

我在我的應用和示例應用中看到了相同的失敗率/速度。它看起來像Chrome處理服務器套接字時的錯誤。謝謝。 –

+0

是的,我肯定會建議在http://crbug.com上提交一個錯誤(尤其是因爲Google的示例應用程序已經提供了測試代碼)。最好的情況下,你的錯誤是有效的,他們修復底層的套接字代碼。最糟糕的情況是,API中沒有錯誤,但Google修復了示例服務器代碼以正常工作。 – apsillers

回答

1

只是在此更新。根據this,問題現在已修復。

1

示例Web服務器應用程序還存在其他問題。我注意到我可以通過在瀏覽器中按住Ctrl-R來鎖定示例應用程序。我寫了一個更強大的文檔,您可以在這裏使用:https://github.com/kzahel/web-server-chrome