【问题标题】:NODE JS Socket IO: req, resNODE JS Socket IO: req, res
【发布时间】:2015-12-24 18:35:17
【问题描述】:

我在我的网站上使用 node js 和 socket io 并且我有一个问题,我想在我的“client.on('Connexion', function(data) { } ”被调用时在我的网站上连接我的客户端,并且我有一个问题:

/* ------- 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);
});

提前谢谢你:)

【问题讨论】:

  • 你需要在客户端做一个重定向。 socket.io 的服务器上没有重定向
  • 好的,但是你有我的情况的代码示例吗?因为我从 node js techno 开始开发,而我现在不知道该怎么做?谢谢
  • 您使用 socketio 向客户端发送消息,收到此消息的客户端将使用 location.href='/other/page' 重定向到另一个页面

标签: javascript node.js sockets session express


【解决方案1】:

您可以尝试这样做:

    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' })
    })
  })

【讨论】:

    猜你喜欢
    • 2014-10-18
    • 2017-08-07
    • 2013-04-20
    • 1970-01-01
    • 2015-06-14
    • 2018-12-13
    • 2020-11-12
    • 2016-02-19
    • 1970-01-01
    相关资源
    最近更新 更多