Back to Socket Io

Example with Passport

examples/passport-example/README.md

4.7.51.1 KB
Original Source

Example with Passport

This example shows how to retrieve the authentication context from a basic Express + Passport application.

Please read the related guide: https://socket.io/how-to/use-with-passport

How to use

$ npm ci && npm start

And point your browser to http://localhost:3000. Optionally, specify a port by supplying the PORT env variable.

How it works

The Socket.IO server retrieves the user context from the session:

js
function onlyForHandshake(middleware) {
  return (req, res, next) => {
    const isHandshake = req._query.sid === undefined;
    if (isHandshake) {
      middleware(req, res, next);
    } else {
      next();
    }
  };
}

io.engine.use(onlyForHandshake(sessionMiddleware));
io.engine.use(onlyForHandshake(passport.session()));
io.engine.use(
  onlyForHandshake((req, res, next) => {
    if (req.user) {
      next();
    } else {
      res.writeHead(401);
      res.end();
    }
  }),
);