Skip to content

Commit 8259cda

Browse files
docs: use io.engine.use() with express-session
Related: #4819
1 parent fd9dd74 commit 8259cda

File tree

3 files changed

+9
-31
lines changed

3 files changed

+9
-31
lines changed

examples/express-session-example/index.html

+4
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@
5252
socket.on("disconnect", () => {
5353
ioStatus.innerText = "disconnected";
5454
});
55+
56+
socket.on("current count", (count) => {
57+
ioCount.innerText = count;
58+
});
5559
</script>
5660
</body>
5761
</html>

examples/express-session-example/index.js

+4-30
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ app.post("/incr", (req, res) => {
2424
const session = req.session;
2525
session.count = (session.count || 0) + 1;
2626
res.status(200).end("" + session.count);
27+
28+
io.to(session.id).emit("current count", session.count);
2729
});
2830

2931
app.post("/logout", (req, res) => {
@@ -35,37 +37,9 @@ app.post("/logout", (req, res) => {
3537
});
3638
});
3739

38-
const io = new Server(httpServer, {
39-
allowRequest: (req, callback) => {
40-
// with HTTP long-polling, we have access to the HTTP response here, but this is not
41-
// the case with WebSocket, so we provide a dummy response object
42-
const fakeRes = {
43-
getHeader() {
44-
return [];
45-
},
46-
setHeader(key, values) {
47-
req.cookieHolder = values[0];
48-
},
49-
writeHead() {},
50-
};
51-
sessionMiddleware(req, fakeRes, () => {
52-
if (req.session) {
53-
// trigger the setHeader() above
54-
fakeRes.writeHead();
55-
// manually save the session (normally triggered by res.end())
56-
req.session.save();
57-
}
58-
callback(null, true);
59-
});
60-
},
61-
});
40+
const io = new Server(httpServer);
6241

63-
io.engine.on("initial_headers", (headers, req) => {
64-
if (req.cookieHolder) {
65-
headers["set-cookie"] = req.cookieHolder;
66-
delete req.cookieHolder;
67-
}
68-
});
42+
io.engine.use(sessionMiddleware);
6943

7044
io.on("connection", (socket) => {
7145
const req = socket.request;

examples/express-session-example/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,6 @@
1010
"dependencies": {
1111
"express": "~4.17.3",
1212
"express-session": "~1.17.2",
13-
"socket.io": "~4.4.1"
13+
"socket.io": "^4.7.2"
1414
}
1515
}

0 commit comments

Comments
 (0)