关闭Chrome应用程序窗口关闭Websocket

问题描述:

我在浏览器窗口中启动了Chrome应用程序,利用Web套接字。该应用程序绑定到localhost:9999。所有这些工作正常,直到我关闭应用程序窗口并重新打开。 Chrome仍然保持该端口并出现错误。关闭Chrome应用程序窗口关闭Websocket

我想关闭网络套接字/取消绑定端口,当窗口关闭,以便当重新打开时,它再次建立连接。

我试过chrome.app.window.onClosedbackground.js文件无济于事。当窗口关闭时,它似乎不会被调用。我不知道这是因为我必须告诉它如何告诉它要注意哪个窗口。

+0

同样的问题在这里解决 - https://github.com/GoogleChrome/chromedeveditor/issues/1023 – levi

为应用程序创建窗口后,您可以附加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); 
     } 
    ); 
    }); 

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

使用chrome.sockets.udp.getSockets()返回一个开放sockets(sock_arr)的数组。现在在中寻找本地端口循环,即sock_arr[i].localPort == 9999并关闭套接字(如果有的话)。然后继续套接字创建和绑定。

+0

嗨!对不起,花了这么长时间回到你身边。我仍然有这个问题,我对你的解决方法很感兴趣。我会在background.js中实现这个吗? –