关闭适用于Chrome应用程序的应用程序窗口上的Websocket

时间:2015-09-27 19:50:35

标签: javascript sockets websocket google-chrome-app

我在浏览器窗口中启动了一个使用网络套接字的Chrome应用程序。该应用程序绑定到localhost:9999。所有这一切都正常,直到我关闭应用程序窗口并重新打开。 Chrome仍然保留在该端口上并出现错误。

我希望能够在窗口关闭时关闭Web套接字/取消绑定端口,以便在重新打开时再次建立连接。

我已尝试chrome.app.window.onClosed文件中的background.js无效。当窗口关闭时,它似乎没有被调用。我不知道这是因为我必须告诉它要注意哪个窗口。

2 个答案:

答案 0 :(得分:2)

为您的应用创建窗口后,您可以附加一个OnClosed侦听器。 另请参阅https://developer.chrome.com/apps/app_window#event-onClosed

chrome.app.runtime.onLaunched.addListener(function(launchData) {
    chrome.app.window.create(
      'index.html',
      { id: 'win'},
      function(createdWindow) {
        function mainWindowClosed () {
          websocket.close();
        }
        mainWindow = createdWindow;
        mainWindow.onClosed.addListener(mainWindowClosed);
      }
    );
  });

答案 1 :(得分:0)

我也有类似的问题。 onClosed听众没有工作。解决方法是在启动应用程序并创建套接字时首先检查它是否可用,然后再创建并绑定它。

使用返回打开chrome.sockets.udp.getSockets()数组的sockets(sock_arr)。现在在 for 循环中查找localPort,即sock_arr[i].localPort == 9999,如果找到则关闭套接字。然后继续创建套接字和绑定。