У меня огромная проблема, и я должен спросить вас, ребята, механизм о переподключении. В моей ситуации активное соединение с сокетом и ничего плохого, когда клиент хочет отключиться, хотя состояние сети сложно; когда пользовательская сеть исчезла, она переходит в OnDisconnected. Все мои повторные подключения открыты с интервалом повторного подключения 2 с. Интервал пульса равен 30, а тайм-аут - 60. Когда это происходит, сервер запрашивает запрос пинг-понга через (максимум) 30 секунд, и из-за тайм-аута сервер решает, что сокет мертв + 60 секунд спустя. Поэтому, когда пользовательская сеть пропала, сервер отключает пользователя через 90 с (не более).
Теперь проблема начинается. Когда пользователь открывает свою сеть в течение 90 секунд, сервер имеет один неиспользуемый блок и один активный сокет для уникального пользователя. Я хочу, чтобы клиент переподключался без форсирования нового сокета. Я видел, что значение forceNew из Socket.IO по умолчанию равно false. «Переподключение» запускает новый сокет «всегда» или в любом случае необходимо повторно подключиться к старому сокету. Я также попробовал sid пользователя в URL-адресе соединения, но сервер не ответил мне вообще. Я должен хранить один сокет для каждого уникального пользователя, но в этом случае я просто не могу, и это действительно проблема для меня. Я знаю, что могу сократить сердцебиение и особенно тайм-аут, но из-за многопользовательской игры с Unity (плагин BestHTTP) я не могу часто использовать запрос пинг-понга. Даже если это произойдет, в одно и то же время произойдет несколько отключений и подключений (что я проверил с настройками тайм-аута 1-2 интервала) по следующему правилу; интервал должен быть ниже тайм-аута. Все еще не работал. Я просто хочу, чтобы мой старый идентификатор сеанса в связи с живым старым сокетом не создавал новый. Так что я полностью открыт для ваших ответов.