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

RTW*_*RTW 9 express socket.io reactjs

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

  useEffect(() => {
    socket.emit('login', myLoginCode)
  }, [])
Run Code Online (Sandbox Code Playgroud)

在服务器端,我做了这个:

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
      })
})
Run Code Online (Sandbox Code Playgroud)

但是我怎么能用套接字做同样的事情呢?

  socket.on('login', loginCode => {
     // How to to place cookies in user browser from here?
    }
Run Code Online (Sandbox Code Playgroud)

也许有一种方法可以使用socket.emit发送标头?

RTW*_*RTW 6

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

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

document.cookie =
    'id=' +
    loginData.id +
    '; expires=Fri, 31 Dec 9999 23:59:59 GMT; secure; samesite=strict; path=/'
Run Code Online (Sandbox Code Playgroud)