我正在尝试从Google Chrome打包应用程序中获取一个简单的网页服务器。应用程序中已经运行了一个UDP服务器并且没有任何问题。
我正在0.0.0.0:8080
启动socket.listen并从
https://github.com/GoogleChrome/chrome-app-samples/tree/master/webserver
。在示例应用程序中复制了同样的问题。
我正在做的是接受请求并向请求中包含一些数据的所有请求发送单个HTML文件(request.data.length > 0
)。该应用程序的流程类似于具有接近等效功能的示例应用程序。
为了测试这个,我使用的是Socket Test 3.0
(来自SourceForge)。创建一个127.0.0.1:8080
的套接字并将其作为内容发送GET / HTTP/1.1
。根据预期,Chrome应用程序会使用html文件和正确的标头进行响应。我可以多次重复此操作而无需重新启动应用程序。当应用程序通过Chrome发送请求时,会出现问题。首先看它按预期工作,但在刷新时它 Time Out 。这也在示例应用程序中复制。
在调试时我发现每件事都是处理。写入套接字被销毁并发出socket.accept(serverSocket, ...)
。我还确保它是在socket.write
的回调函数内完成的。第一个请求是针对请求的页面(GET / HTTP/1.1
的{{1}})。第二个是favicon.ico localhost:8080
。然后在数据中没有第三个连接(然后被忽略并且套接字被破坏)。与SocketTest不同,每个请求都得到了回复。
答案 0 :(得分:0)
我在使用Google的示例网络服务器时遇到了同样的问题。我写了一个更强大的套接字服务器应用程序,不会挂起。该来源位于https://github.com/kzahel/web-server-chrome的GitHub上,您可以在Chrome网上商店https://chrome.google.com/webstore/detail/web-server-for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb
安装它