0

我正在尝试从 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.1for localhost:8080)。第二个是 favicon.ico 作为GET /favicon.ico HTTP/1.1. 然后是第三个没有数据的连接(然后被忽略并销毁套接字)。与 SocketTest 中的每个请求都得到回复不同。

我在YouTube 上重现错误时创建了一段视频,显示截屏视频。我正在处理的项目的 repo 也在GitHub 上

4

1 回答 1

0

我在使用 Google 的示例网络服务器时遇到了同样的问题。我写了一个更健壮的不会挂起的套接字服务器应用程序。源代码位于 GitHub 上的https://github.com/kzahel/web-server-chrome,您可以从 Chrome 网上商店安装它,网址为https://chrome.google.com/webstore/detail/web-server- for-chrome/ofhbbkphhbklhfoeikjpcbhemlocgigb

于 2014-02-27T01:59:51.010 回答