Хорошо, я нашел проблему для этого.
У меня есть класс Client, который действует как оболочка для моих соединений Socket.IO. Давайте назовем это ClientClass. Внутри ClientClass у меня есть частный статический экземпляр ClientClass, доступ к которому можно получить только через вызов статического метода getInstance () класса.
Во время закрытия соединения я забыл установить его на нуль как таковой:
public void close() {
socket.emit("bye");
socket.off();
socket.disconnect();
socket.close();
roomName = null;
socket = null;
instance = null; //I forgot this line
}
Это довольно странная проблема, которую сложно отладить по ошибкам, которую невозможно отследить, просто прочитав журналы ошибок.