2017-11-16 5 views
0

내 nodejs 백엔드 서버에 socket.io을 사용하고 있습니다. 그리고 각 이벤트마다 미들웨어를 설치하려고합니다. 아래는 내 코드입니다.socket.io의 이벤트에 미들웨어를 바인딩하는 방법

io.use((socket, next) => { 
    // some logic 
    return next(); 
}); 

이 코드는 초기 연결에서만 작동합니다. 소켓의 각 이벤트에서 작동하지 않습니다. 각 소켓 이벤트에 대해 미들웨어를 설치하려면 어떻게해야합니까?

나는이 게시물 https://stackoverflow.com/questions/35077449/how-to-bind-middleware-to-events-in-socket-iohttps://stackoverflow.com/questions/18664184/how-to-pass-changes-from-middleware-to-socket-io을 확인했으나 필요한 것은 수행하지 않습니다. 각 이벤트 리스너를 변경하지 않고 미들웨어를 설정하고 싶습니다.

+0

내가 socket.io 생각 EventEmitter에서 라이브러리 또는 재정의 일을 패치하지 않고 모든 이벤트에 대한 미들웨어를 지원하지 않습니다. – jfriend00

답변

0

"와일드 카드 이벤트"를 찾는 것처럼 들립니다. 나는 개인적으로 시도하는 것이 좋습니다 socketio-wildcard. 해당 페이지에서

발췌문 :


npm install --save socketio-wildcard 

var io   = require('socket.io')(); 
var middleware = require('socketio-wildcard')(); 

io.use(middleware); 

io.on('connection', function(socket) { 
    socket.on('*', function(packet){ 
    // client.emit('foo', 'bar', 'baz') 
    packet.data === ['foo', 'bar', 'baz'] 
    }); 
}); 

io.listen(8000);