如何从服务器发送cookie到socket.io客户端?

时间:2018-11-20 22:27:03

标签: reactjs express socket.io

在我的客户上,我这样做:

  useEffect(() => {
    socket.emit('login', myLoginCode)
  }, [])

在服务器端,我这样做:

app.get('login', (req, res) => {
      const cookieProtected = {
        maxAge: 946080000000,
        httpOnly: true,
        secure: true,
        sameSite: true
      } 
      res.cookie('id', login, cookieProtected)
      res.cookie('session', encryptSession, cookieProtected)
      res.cookie('logged', 'true', {
        maxAge: 946080000000,
        secure: true,
        sameSite: true
      })
})

但是我该如何使用套接字呢?

  socket.on('login', loginCode => {
     // How to to place cookies in user browser from here?
    }

也许可以通过socket.emit发送头文件吗?

1 个答案:

答案 0 :(得分:4)

没有重写IO库,我们无法做到这一点,因此唯一的选择是在客户端设置cookie。

现在,我只是在服务器上验证用户并像对象一样发送客户端cookie,然后在客户端上我这样做:

document.cookie =
    'id=' +
    loginData.id +
    '; expires=Fri, 31 Dec 9999 23:59:59 GMT; secure; samesite=strict; path=/'