2017-01-19 2 views
1

Comment pouvez-vous détecter que vous avez reçu un message sur une connexion socket.io pour laquelle vous n'avez pas de gestionnaire?socket.io - comment accéder aux messages non gérées?

exemple:

// client 
socket.emit('test', 'message'); 

// server 
io.on('connection', function (socket) { 
    console.log('connection received...'); 

    // logs all messages 
    socket.conn.on('message', function(data) { 
    console.log('this gets every message.'); 
    console.log('how do I get just the ones without explicit handlers?'); 
    }); 

    socket.on('other' function(data) { 
    console.log('expected message'); 
    }); 
} 

Répondre

0

Je n'ai pas trouvé un moyen de le faire comme socket.io, mais en utilisant la fonction d'un js simples pour transformer un message en JSON qu'il fait le même travail. Ici, vous pouvez essayer ceci:

function formatMessage(packetType, data) { 
    var message = {'packetType': packetType, 'data': data} 
    return JSON.stringify(message) 
} 

Avec:

socket.on('message', function(packet){ 
    packet = JSON.parse(packet) 

    switch (packet.packetType) { 
     case 'init': 
    ... 

et

socket.send(formatMessage('init', {message})); 
0

Je le ferais, bien sûr, il est le code abstrait ... vous auriez à mettre en œuvre tous les auditeurs et la logique pour obtenir les ID des utilisateurs au travail

Client

var currentUser = { 
    id: ? // The id of current user 
}; 
var socketMessage = { 
    idFrom: currentUser.id, 
    idTo: ?, // Some user id value 
    message: 'Hello there' 
}; 

socket.emit('message', socketMessage); 

socket.on('emitedMessage' + currentUser.id, function(message) { 
     // TODO: handle message 
}); 

serveur

io.on('connection', function (socket) { 
    // Handle emit messages 
    socket.on('message', function(socketMessage) { 
      // With this line you send the message to a specific user 
      socket.emit('emitedMessage-' + socketMessage.idTo, { 
       from: socketMessage.idFrom, 
       message: socketMessage.message 
      }); 
    }); 
}); 

Plus d'info: http://socket.io/docs/