Как закрыть websocket и освободить порт
У меня веб-сокет открыт под определенным портом, и когда клиентский веб-браузер закрывается, я хочу, чтобы веб-сокет был аккуратно закрыт, чтобы программа сервера продолжала работать и приняла новое соединение.
Прямо сейчас у меня есть код на стороне клиента следующим образом:
window.addEventListener('load', function(){
ws = new WebSocket(url);
ws.onopen = function(e){...};
ws.onmessage = function(e){...};
ws.onerror = function(e){...};
ws.onclose = function(e){
alert('Browser Closed');
};
window.onbeforeunload = function(e){
ws.close();
};
}, false);
Когда я запускаю сервер и открываю веб-браузер для подключения, он работает впервые. Затем, после того, как я закрываю браузер и пытаюсь подключиться снова, я получаю сообщение об ошибке, потому что порт используется. Это означает, что когда я закрывал браузер после первого подключения, веб-сокет ws
не был закрыт чисто. Я использую Google Chrome, и я прочитал, что Chrome отключает onbeforeunload
поэтому функция, связанная с этим событием, может не выполняться. Я могу подтвердить из сообщения о том, что ws.onclose
выполняется, когда браузер закрыт. Как правильно закрыть веб-сокет и освободить порт при закрытом браузере? Нужно ли что-то делать на стороне сервера?