Socket.io Client: respond to all events with one handler?

前端 未结 14 1958
时光取名叫无心
时光取名叫无心 2020-11-28 04:16

Is it possible to have a socket.io client respond to all events without to have specify each event individually?

For example, something like this (which obviously do

14条回答
  •  谎友^
    谎友^ (楼主)
    2020-11-28 04:55

    socket.io-client 1.7.3

    As of May 2017 couldn't make any of the other solutions work quite how i wanted - made an interceptor, using at Node.js for testing purposes only:

    var socket1 = require('socket.io-client')(socketUrl)
    socket1.on('connect', function () {
      console.log('socket1 did connect!')
      var oldOnevent = socket1.onevent
      socket1.onevent = function (packet) {
        if (packet.data) {
          console.log('>>>', {name: packet.data[0], payload: packet.data[1]})
        }
        oldOnevent.apply(socket1, arguments)
      }
    })
    

    References:

    • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/apply
    • https://github.com/socketio/socket.io-client/blob/ff4cb3eed04a95c9725b8aaba8b64fa9fa1ca413/lib/socket.js#L257

提交回复
热议问题