我正在尝试从 Google Chrome 打包应用程序中获取一个简单的网页服务器。应用程序中已经有一个 UDP 服务器在运行并且没有任何问题。
我正在启动 socket.listen0.0.0.0:8080
并从中复制大部分代码
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 发送请求时,就会出现问题。乍一看,它按预期工作,但随后它在刷新时超时。这也在示例应用程序中复制。
在调试时,我发现每件事都在处理。写入套接字被销毁并socket.accept(serverSocket, ...)
发出。我还确保它是在socket.write
. 预期的第一个请求是针对请求的页面(GET / HTTP/1.1
for localhost:8080
)。第二个是 favicon.ico 作为GET /favicon.ico HTTP/1.1
. 然后是第三个没有数据的连接(然后被忽略并销毁套接字)。与 SocketTest 中的每个请求都得到回复不同。