2013-08-06 81 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