我在浏览器窗口中启动了一个使用网络套接字的Chrome应用程序。该应用程序绑定到localhost:9999
。所有这一切都正常,直到我关闭应用程序窗口并重新打开。 Chrome仍然保留在该端口上并出现错误。
我希望能够在窗口关闭时关闭Web套接字/取消绑定端口,以便在重新打开时再次建立连接。
我已尝试chrome.app.window.onClosed
文件中的background.js
无效。当窗口关闭时,它似乎没有被调用。我不知道这是因为我必须告诉它要注意哪个窗口。
答案 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
,如果找到则关闭套接字。然后继续创建套接字和绑定。