2015-10-01 9 views
11

Sto tentando di registrare event name e parameter per ciascun evento sul mio server del nodo. Per questo scopo ho usatoCome ottenere i dettagli dell'evento nel middleware per socket.io

io.use(function(socket, next){ 
    // how to get event name out of socket. 
}); 

Ora, mi sono bloccato mentre cercavo di ottenere il nome dell'evento e gli argomenti. Per me, sembra una richiesta comune da parte dell'API dev, quindi sono abbastanza sicuro che ci sia un modo per ottenere la libreria, ho provato a leggere i documenti e la fonte, ma non sono in grado di ottenere la roba.

+0

Avete provato a stampare le proprietà di 'socket' usando [' util.inspect'] (https://nodejs.org/api/util.html#util_util_inspect_object_options) per vedere se c'è una proprietà che ha i dati di cui avete bisogno ? Questo può essere un po 'di lavoro, ma è il modo migliore per trovare la proprietà giusta se non è nella documentazione. – Wouter

+0

Ho provato a controllare 'socket.request' ma non ho controllato' socket' stesso. – guptakvgaurav

+0

Volevo sapere anche questo. Ho usato [iteratore ricorsivo] (https://github.com/nervgh/recursive-iterator) per scorrere tutte le proprietà nell'oggetto 'socket' in modo ricorsivo, ma non ho trovato la stringa' 'connection '' per quell'evento. Nel codice sorgente di socket.io c'è un 'ondecoded' che chiama' onpacket' con id/message. E il middleware 'use' non sembra essere coinvolto in nessuna di queste cose (infatti sembra che accada prima di tutto) quindi probabilmente questo è il motivo per cui questo dettaglio non è disponibile qui. Apprezzerei davvero se qualcuno potesse fornire una risposta più autorevole su questo però .. – laggingreflex

risposta

2

Gli eventi del socket devono essere gestiti correttamente, in ogni caso se un evento non viene gestito non ci sarà risposta.

var io = require('socket.io')(server); 
var sessionMiddleWare=(session({secret: 'secret key', resave: true, saveUninitialized: true,cookie: { path: '/', httpOnly: true, maxAge: 300000 },rolling: true})); 

app.use(sessionMiddleWare) 

io.use(function(socket, next) { 
    sessionMiddleWare(socket.request, socket.request.res, next); 
}); 

io.on('connection', function(socket) { // On Socket connection. 
    // inside this you can use different events 

    //event name and parameters can be found in socket variable. 

    console.log(socket.id) // prints the id sent from the client. 
    console.log(socket.data) // prints the data sent from the client. 

    // example event 

    socket.on('subscribe', function(room) { // Event sample. 
     console.log('joining room', room); 
     socket.room=room; 
     socket.join(room); 
    }); 
}) 

Spero che questo aiuti.

Problemi correlati