【问题标题】:HTTP Server in Chrome Packaged App using Sockets API使用 Sockets API 的 Chrome 打包应用程序中的 HTTP 服务器
【发布时间】: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 中的每个请求都得到回复不同。

我在重现YouTube 上的错误时制作了一段视频来显示截屏视频。此外,我正在处理的项目的 repo 位于GitHub。

【问题讨论】:

    标签: google-chrome google-chrome-extension google-chrome-app


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-29
      • 1970-01-01
      • 1970-01-01
      • 2012-12-20
      相关资源
      最近更新 更多