From 8259cdac8439400d8815d6830d13bdd22bb6390f Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Wed, 13 Sep 2023 12:13:03 +0200 Subject: [PATCH] docs: use io.engine.use() with express-session Related: https://github.com/socketio/socket.io/discussions/4819 --- examples/express-session-example/index.html | 4 +++ examples/express-session-example/index.js | 34 +++---------------- examples/express-session-example/package.json | 2 +- 3 files changed, 9 insertions(+), 31 deletions(-) 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" } }