首页 > 解决方案 > 套接字 io:socket.use() 不验证传入的套接字连接

问题描述

我试图对命名空间上的每个传入套接字进行身份验证。我在文档中遇到了套接字级中间件。我从那里复制了代码示例,但它似乎对我不起作用。这是代码:

Server Side

io.of('/').on('connection', socket => {
  
  socket.use(([event, ...args], next) => {
    console.log('middleware here') // doesn't log anything
    return next(new Error('unauthorized event')) // trying to abort the connection
  })

  socket.on('error', err => {
    if (err && err.message === 'unauthorized event') {
      console.log('here') // doesn't log anything
      socket.disconnect()
    }
  })

  console.log('disconnected:' socket.disconnected) // logs 'false', socket doesn't disconnect

})

另一方面client,我尝试添加一个捕获所有侦听器

const socket = io('/')

socket.onAny((eventName, ...args) => {
  console.log('here') //doesn't log anything
});

socket.on('connect', () => {
  console.log(socket) //logs the socket
})

为什么我不能按照文档所说的方式让它工作?

标签: node.jssocket.io

解决方案


推荐阅读