【发布时间】:2013-02-22 20:51:13
【问题描述】:
我正在尝试从 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 发送请求时,就会出现问题。乍一看,它按预期工作,但在刷新时超时。这也在示例应用中得到了复制。
在调试时,我发现每件事都在处理中。写入套接字被销毁并发出socket.accept(serverSocket, ...)。我还确保它是在socket.write 的回调函数中完成的。预期的第一个请求是针对请求的页面(GET / HTTP/1.1 用于localhost:8080)。第二个是 favicon.ico 的 GET /favicon.ico HTTP/1.1。然后是第三个没有数据的连接(然后被忽略并销毁套接字)。与 SocketTest 中的每个请求都得到回复不同。
【问题讨论】:
标签: google-chrome google-chrome-extension google-chrome-app