diff --git a/examples/express-session-example/index.html b/examples/express-session-example/index.html index e9a02ee4ec..890fca1c6c 100644 --- a/examples/express-session-example/index.html +++ b/examples/express-session-example/index.html @@ -52,6 +52,10 @@ socket.on("disconnect", () => { ioStatus.innerText = "disconnected"; }); + + socket.on("current count", (count) => { + ioCount.innerText = count; + }); diff --git a/examples/express-session-example/index.js b/examples/express-session-example/index.js index 097700b6c0..e3eed9c23c 100644 --- a/examples/express-session-example/index.js +++ b/examples/express-session-example/index.js @@ -24,6 +24,8 @@ app.post("/incr", (req, res) => { const session = req.session; session.count = (session.count || 0) + 1; res.status(200).end("" + session.count); + + io.to(session.id).emit("current count", session.count); }); app.post("/logout", (req, res) => { @@ -35,37 +37,9 @@ app.post("/logout", (req, res) => { }); }); -const io = new Server(httpServer, { - allowRequest: (req, callback) => { - // with HTTP long-polling, we have access to the HTTP response here, but this is not - // the case with WebSocket, so we provide a dummy response object - const fakeRes = { - getHeader() { - return []; - }, - setHeader(key, values) { - req.cookieHolder = values[0]; - }, - writeHead() {}, - }; - sessionMiddleware(req, fakeRes, () => { - if (req.session) { - // trigger the setHeader() above - fakeRes.writeHead(); - // manually save the session (normally triggered by res.end()) - req.session.save(); - } - callback(null, true); - }); - }, -}); +const io = new Server(httpServer); -io.engine.on("initial_headers", (headers, req) => { - if (req.cookieHolder) { - headers["set-cookie"] = req.cookieHolder; - delete req.cookieHolder; - } -}); +io.engine.use(sessionMiddleware); io.on("connection", (socket) => { const req = socket.request; diff --git a/examples/express-session-example/package.json b/examples/express-session-example/package.json index 2b3c46881e..9b0b4d6226 100644 --- a/examples/express-session-example/package.json +++ b/examples/express-session-example/package.json @@ -10,6 +10,6 @@ "dependencies": { "express": "~4.17.3", "express-session": "~1.17.2", - "socket.io": "~4.4.1" + "socket.io": "^4.7.2" } }