简体   繁体   中英

NODE JS Socket IO: req, res

I use node js and socket io on my website and i have a problem, i want to connect my client on my website when my "client.on('Connexion', function(data) { } " is called, and i have a problem :

 /* ------- CALLBACK CONNECTION : --------*/ io.sockets.on('connection', function (client, req, res) { client.on('Connexion', function(data) { blabla... if(results[0]) { req.session.id = results[0]; req.session.firstname = results[1]; req.session.lastname = results[2]; req.session.email = results[4]; req.session.birthdate = results[5]; req.session.phonenum = results[6]; res.redirect("http://mydomain/" + "espace-client/"); /* HERE, req.session give and error --> TypeError: Cannot read property 'session' of undefined */ } } }); /* ------- I HAVE TEST THIS AND IT WORKS FINE : --------*/ app.get('/test/', function(req, res) { req.session.id = "45"; res.send(req.session.id); });

Thank you in advance :)

You can try to do this:

    const io = socketIO.listen(server);
io.sockets
  .on('connection', socket => {
    socket.on('socket.setOnline', async event => {
      const { access_token } = event;

      if (!access_token) return socket.emit('socket.error', 'no access_token token');

      jwt.verify(access_token, 'HelloThere', err => {
        if (err) socket.emit('socket.error', err.message);
      });

      const user = await userService.getByAccessToken(access_token);

      if (!user) return socket.emit('socket.error', 'user on setOnline not found');

      user.update({ isOnline: true });

      socket.emit('socket.notification', `#${user.id}: ${user.name} is online`);
      socket.emit('socket.userStatus', { status: 'online' })
    })

    socket.on('socket.setOffline', async event => {
      const { access_token } = event;

      if (!access_token) return socket.emit('socket.error', 'no access_token token');

      jwt.verify(access_token, 'HelloThere', err => {
        if (err) socket.emit('socket.error', err.message)
      });

      const user = await userService.getByAccessToken(access_token);

      if (!user) return socket.emit('socket.error', 'user on setOffline not found');

      user.update({ isOnline: false });

      socket.emit('socket.notification', `#${user.id}: ${user.name} is offline`);
      socket.emit('socket.userStatus', { status: 'offline' })
    })
    socket.on('socket.checkUserStatus', async event => {
      const { access_token } = event;

      if (!access_token) return socket.emit('socket.error', 'no access_token token');

      jwt.verify(access_token, 'HelloThere', err => {
        if (err) socket.emit('socket.error', err.message);
      });

      const user = await userService.getByAccessToken(access_token);

      socket.emit('socket.userStatus', { status: user.isOnline ? 'online' : 'offline' })
    })
  })

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM