Как указано в документации и, как вы сказали, сокет должен нормально пересоединяться.Поскольку вы можете отправлять сообщения, кажется, что вы на полпути переподключены.
Есть пара событий, которые вам стоит добавить, чтобы увидеть, не является ли что-то необычным: reconnecting
, reconnect_attempt
, reconnect
, reconnect_error
и reconnect_failed
.
Если из этого ничего не выйдет, я бы посоветовал вам проверить, получаете ли вы событие отключения в вашем клиенте, и отозватьваша функция соединения, так что вы получаете совершенно новый сокет после восстановления сети:
socket.on('disconnect', () => {
// reconnect
})
Из прошлого опыта в объекте сокета хранилось некоторое грязное состояние, которое могло бы объяснить вашу проблему, и оно того стоитНачните все сначала с чистого листа.
Примечание. Для людей, которым не нужен клиент socket-io, есть также небольшая библиотека, которая позволяет это сделать.должен работать и с бэкэндом socket-io, reconnecting-websocket .