Как закрыть 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 выполняется, когда браузер закрыт. Как правильно закрыть веб-сокет и освободить порт при закрытом браузере? Нужно ли что-то делать на стороне сервера?

0 ответов

Другие вопросы по тегам