Javascript 您是否总是必须将socket.on封装在io.on连接块中?

Javascript 您是否总是必须将socket.on封装在io.on连接块中?,javascript,node.js,websocket,socket.io,Javascript,Node.js,Websocket,Socket.io,我不熟悉socket.io,并且意识到每个服务器端EventListenr都包装在一个io中。在连接块上: io.on('connection', socket => { socket.on('event name', callback) }) 我对两件事有点困惑: 我是否总是必须将我的socket.on封装在这种块中?是否因为套接字代表引发连接事件的单个客户端 为什么我应该在块内使用socket.on而不是io.on,因为它们似乎做了相同的事情(比如io.on('connectio

我不熟悉socket.io,并且意识到每个服务器端EventListenr都包装在一个
io中。在
连接块上:

io.on('connection', socket => {
  socket.on('event name', callback)
})
我对两件事有点困惑:

  • 我是否总是必须将我的
    socket.on
    封装在这种块中?是否因为
    套接字
    代表引发连接事件的单个客户端
  • 为什么我应该在块内使用
    socket.on
    而不是
    io.on
    ,因为它们似乎做了相同的事情(比如
    io.on('connection',()=>io.on('event name',callback))
  • io.on()
    表示向服务器添加事件侦听器

    io.on('connection', socket => {
      socket.on('event name', callback)
    })
    
    socket.on()
    表示在客户端连接时向客户端添加事件侦听器

    如果客户端尚未连接,则无法将事件侦听器添加到客户端。
    我们要做的是,在服务器上添加一个事件监听器,当客户端连接时,它会触发。一旦客户机被连接,我们就向他添加事件监听器,当他发送数据时触发(例如)

    这并不能真正回答所建议的替代方法是否有效。