在Chrome应用程序的应用程序窗口关闭时关闭Websocket

Close a Websocket on application window close for a Chrome application

本文关键字:应用程序 Websocket 窗口 Chrome      更新时间:2023-09-26

我在浏览器窗口中启动了一个Chrome应用程序,该应用程序使用web套接字。应用程序绑定到localhost:9999。在我关闭应用程序窗口并重新打开之前,所有这些都可以正常工作。Chrome仍然保留着这个端口,并出现了一个错误。

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

我尝试了background.js文件中的chrome.app.window.onClosed,但没有成功。当窗户关上的时候,似乎没有人叫它。我不知道这是因为我必须告诉它该往哪个窗口看。

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

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);
      }
    );
  });

我也遇到了类似的问题。onClosed侦听器不工作。解决方法是当你启动你的应用程序并创建一个套接字时,在创建并绑定到它之前,首先检查它是否可用

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