socket.on()函数不适用于socket emit()

时间:2018-04-03 17:46:37

标签: node.js mongodb socket.io

var mongo    =     require('mongodb').MongoClient,
    client   =     require('socket.io').listen(8080).sockets; 

    const url = 'mongodb://localhost:27017';


    mongo.connect(url , function(err , dbs){

          if(err) throw err;

          client.on('connection' , function(socket){

            const db = dbs.db('chat');

           var col = db.collection('messages');

             //wait for input 

             socket.on('input' , function(data){

                var name     =   data.name,
                    message  =   data.message;

                    col.insert({name : 'name' , message : 'message'} , function(){
                        console.log('inserted');
                    }); 
             });

        });

    });

var socket = io.connect('http://localhost:8080')
socket.emit(['input' , {name : "aizaz" , message: "jhello message"}]);

1 个答案:

答案 0 :(得分:0)

这不起作用的原因是因为你在附加事件监听器之前发出,socket.on('input', cb)必须在之前调用 socket.emit()