我在浏览器窗口中启动了一个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,并关闭套接字(如果找到(。然后继续创建和绑定套接字。