用于HTTP连接的chrome.sockets.tcp.onReceiveError

时间:2015-04-27 18:12:00

标签: javascript sockets http tcp google-chrome-app

我正在使用Chrome应用中运行的chrome.sockets.tcpServer监听指定端口上对localhost的HTTP请求。我的应用程序基于Google的代码示例:

https://developer.chrome.com/apps/app_network#tcpServer

HTTP请求来自Flash应用程序的单个实例。它开始工作正常。当第一个请求通过时,Chrome应用程序会与客户端套接字建立连接,并且似乎将此连接用于后续请求。

在同一个会话中,Chrome迟早会为给定的请求打开另一个客户端套接字,然后会快速为新的客户端套接字抛出chrome.sockets.tcp.onReceiveError。然后原始套接字也将抛出相同的错误,并且没有套接字保持连接。

Flash代码只是发出一个常规的HTTP请求(它没有特别要求新的端口)。

有谁知道:

  • 我需要做什么才能将所有请求保留在同一个客户端套接字ID上?
  • 或如何让服务器应对更换套接字?

如果有人有时间看看我的服务器代码:

https://github.com/tarling/http-test/tree/flash/js

我想知道是否与“Connection:keep-alive”有关,所以将其包含在HTTP响应标题中

https://github.com/tarling/http-test/blob/flash/js/http.js#L52

感谢您的任何见解

1 个答案:

答案 0 :(得分:0)

我想我已修好了。更新的代码位于GitHub

变化是:

  • chrome.sockets.tcp.onReceiveError识别结果代码-100作为断开连接,因此断开连接并关闭客户端套接字。这是在查看this code

  • 之后
  • 记住上次成功发送chrome.sockets.tcp.onReceiveError后续发送的lclient套接字ID

  • 只需要为onReceive和onReceiveError事件注册一次侦听器。