Имам проблем с това, че Socket.io получава съобщения точно преди навигация в страницата - обикновено когато съобщението е пряк резултат от някакво действие от страна на сървъра, задействано от навигацията.
Това, което виждам в момента, изглежда така:
- Socket.io се свързва
- Потребителят задейства навигация в страницата (изпраща формуляр, опреснява и т.н.)
- Логиката от страна на сървъра изпраща заявка до сървъра socket.io, който незабавно изпраща събитието до все още свързания клиент
- Клиентът получава и потвърждава заявката (почти съм сигурен, че има някакво потвърждение на съобщенията, вградени в socket.io, поправете ме, ако греша) и ще покаже известие на потребителя, но след това...
- Връзката socket.io се затваря на оригиналната страница
- Новата страница се зарежда и показва
- Socket.io отваря нова връзка, но няма нови съобщения, защото последното е получено и потвърдено.
Това всъщност не е грешка сама по себе си, тъй като не мисля, че е разумно да очакваме Socket.io да затвори връзката преди да се появи навигация. Въпреки това не съм много сигурен кой е най-добрият начин да се справя с това. В момента държа една връзка отворена за всеки клиент в даден момент и затварям другата, когато се свърже нова. Това обаче не се случва в този случай, тъй като първият се е затворил, преди вторият да се свърже. Мога също така да поддържам списък на всички клиенти, но това също няма да реши този проблем, защото съобщението все още ще бъде получено от първата връзка.
Може ли някой да предложи решение на този проблем, което да гарантира, че потребителят винаги вижда известие за съобщението?