I think I might know what it is, but I can’t reproduce it at the moment because I don’t have the full codebase handy on this computer. Could you try changing the /logout
handler in guestbook.routes.services
to set the session to an empty map instead of nil like so?
["/logout"
{:post {:handler
(fn [_]
(->
(response/ok)
(assoc :session {})))}}]
I believe that setting it to nil is completely blowing away the ttl-memory-store
so that we end up with a new session ID when we hit /login
again, but the websocket still has the stale session ID.
If this is the problem, the “proper” way to solve it would be to keep the nil
server-side, but to have the client refresh/redirect to /
so that all client-side state is re-instantiated as well.