io.sockets.emit сбой SOMETIMES, если он должен выполняться после запроса mongo db - PullRequest
0 голосов
/ 27 августа 2018

Я хочу отправить сообщение после проверки запроса к базе данных Монго, но она не работает (не удается отправить несколько раз). Но если удалить запрос к базе данных Монго и если я даю запрос, то это работает

Каждый раз Рабочий кейс

Клиентская сторона

   var socket = io('/', {
   secure: true
   });


   //passing data on connection.
   socket.on('connect', function() {

   socket.emit('somedata', "bla bla");

   });


   socket.on('hi', function(data) {
   console.log(data)
    });

Серверная сторона

 io = socketio.listen(server);

 var bieroomme = io.of('/')

 bieroomme.on('connection', function(socket) {
 socket.on('somedata', function(data) {

     io.sockets.emit('hi', data);

 });
});

Иногда работает, иногда не работает

Клиентская сторона такая же, как и в предыдущем случае

Serverside

         io = socketio.listen(server);

     var bieroomme = io.of('/')

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


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



                     var MongoClient = require('mongodb').MongoClient;
                     var url = "mongodb://localhost:27017/";

                     MongoClient.connect(url, function(err, db) {

                         var dbo = db.db("dbname");
                         dbo.collection("collectionname").find({
                             "_id": ObjectId(data.id)
                         }).toArray(function(err, rx) {

                             dbo.collection("collectionname").find({
                                 email: data.em
                             }).toArray(function(err, result) {
                                 if (rx[0].bamount < data.val && result[0].wallet > data.val) {
                                     io.sockets.emit('hi', data); // executing sometimes but some times not
                                 }

                             });

                         });
                     });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...