关闭Chrome应用程序窗口关闭Websocket
我在浏览器窗口中启动了Chrome应用程序,利用Web套接字。该应用程序绑定到localhost:9999
。所有这些工作正常,直到我关闭应用程序窗口并重新打开。 Chrome仍然保持该端口并出现错误。关闭Chrome应用程序窗口关闭Websocket
我想关闭网络套接字/取消绑定端口,当窗口关闭,以便当重新打开时,它再次建立连接。
我试过chrome.app.window.onClosed
在background.js
文件无济于事。当窗口关闭时,它似乎不会被调用。我不知道这是因为我必须告诉它如何告诉它要注意哪个窗口。
为应用程序创建窗口后,您可以附加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
并关闭套接字(如果有的话)。然后继续套接字创建和绑定。
嗨!对不起,花了这么长时间回到你身边。我仍然有这个问题,我对你的解决方法很感兴趣。我会在background.js中实现这个吗? –
同样的问题在这里解决 - https://github.com/GoogleChrome/chromedeveditor/issues/1023 – levi