Socket.io没有在某些客户端网络上工作

时间:2017-02-01 12:44:51

标签: node.js socket.io

我使用nodejs和socket.io在共享服务器上的端口49158上运行聊天应用程序,因此我无法使用标准端口80.

在某些网络中,客户端可以使用套接字登录,但无法发送任何消息。 提前谢谢。

客户代码:

var messagToSend = e.data.messageToSend;
      messagToSend.id = self.user.id;
      messagToSend.token = self.user.token;
      self._socket.emit('newmsg',messagToSend, function (err, data) {
        if (err == null) {
          self.toastr.success('Message was sent successefully');
          self.newMessageWindow.close();
        } else {
          self.toastr.error(`Bad emails : ${data} `);
          self.newMessageWindow.close();
        }
      });

服务器代码:

    socket.on('newmsg', function (data, callback) {

    if (data && data.id && data.titre && data.message && data.emails && typeof(data.notify_me) === "boolean" && data.token) {
        var user = null;
        var titre = data.titre;
        var message_content = data.message;
        var emails = data.emails;
        var notify_me = data.notify_me;
        var token = data.token;
        var id = data.id;
        var badusers = [];


        // verification si le  user est bon

        User.get(id, function (err, connected_user) {
            if (!err) {
                user = connected_user;
                if (user !== null) {
                    // verification du token
                    if ((jwt.verify(token, 'shhhhh')) && (jwt.verify(token, 'shhhhh')).email == user.email) {
                        // bon token
                        Sync(function () {
                            // on cree le message
                            try {
                                var message = Message.create.sync(null, {
                                    titre: titre,
                                    content: message_content,
                                    notify_me: notify_me
                                });
                                if (message !== null) {
                                    // message created  we can add the sender
                                    try {
                                        var sender = message.setSender.sync(null, user);
                                        if (sender !== null) {
                                            // on parcours les emails
                                            for (let i = 0; i < emails.length; i++) {
                                                let email_destinaire = emails[i];
                                                let destinataires = User.find.sync(null, {email: email_destinaire}, 1);

                                                if (destinataires.length > 0) {
                                                    let destinataire = destinataires[0];

                                                    // verification si le user est online ou pas
                                                    var k = 0;
                                                    var en_ligne = false;
                                                    while (en_ligne == false && k != online.length) {
                                                        if (online[k].email == destinataire.email) {
                                                            en_ligne = true;
                                                        } else {
                                                            k++;
                                                        }

                                                    }
                                                    if (en_ligne == true) {
                                                        // on fait un emit
                                                        io.sockets.connected[online[k].socket_id].emit('newmsg', {
                                                            id: message.id,
                                                            titre: message.titre,
                                                            content: message.content,
                                                            created_at: message.created_at,
                                                            notify_me: message.notify_me,
                                                            user: user
                                                        });
                                                    }
                                                    // on enregistre dans les receivers
                                                    // on enregistre dans les receivers
                                                    message.addReceivers(destinataire, {vu: false}, function (err, dest) {
                                                        if (!err) {

                                                           /* if (enligne == true) {
                                                                // recuperation de la liste des favoris
                                                                user.getFavoris(function (err, favoris) {
                                                                    if (!err) {
                                                                        var z = 0;
                                                                        var trouve = false;
                                                                        while (trouve == false && z != favoris.length) {
                                                                            if (favoris[z].email == destinataire.email) {
                                                                                trouve = true;
                                                                            } else {
                                                                                z++;
                                                                            }
                                                                        }
                                                                        if (trouve == false) {
                                                                            user.addFavoris(destinataire, function (err, favoris_added) {
                                                                                if (!err) {
                                                                                    var fav = {
                                                                                        id: favoris_added[0].id,
                                                                                        email: favoris_added[0].email,
                                                                                        pseudo: favoris_added[0].pseudo
                                                                                    };
                                                                                    socket.emit('newfavoris', fav);

                                                                                }
                                                                            });
                                                                        }

                                                                    } else {
                                                                        //
                                                                    }
                                                                })
                                                            }*/
                                                            bdd_tchat.query('select  *  FROM user_favoris WHERE user_id=? AND favoris_id=?', [user.id, destinataire.id], function (err, rows) {
                                                                if(!err){
                                                                    if(rows.length ==0){
                                                                        // insert the new
                                                                        let ob = {'user_id':user.id,'favoris_id':destinataire};
                                                                        bdd_tchat.query('insert into user_favoris SET ?',ob, function (err, rows){
                                                                               if(!err){
                                                                                   socket.emit('newfavoris',{
                                                                                       'id': destinataire.id,
                                                                                       'email': destinataire.email,
                                                                                       'pseudo': destinataire.pseudo
                                                                                   })
                                                                               }
                                                                        });
                                                                    }
                                                                }

                                                            });

                                                        } else {
                                                            // erreur  dans l'ajout du destinaire

                                                        }
                                                    });

                                                } else {
                                                    badusers.push(email_destinaire);
                                                }
                                            }

                                            if (badusers.length == 0) {
                                                callback(null, 200)
                                            } else {
                                                if (badusers.length == emails.length) {
                                                    try {
                                                        let result = message.remove.sync(null);
                                                        console.log("Message droped");
                                                        callback('badmails', badusers);
                                                    } catch (e) {
                                                        //console.log(err);
                                                    }

                                                } else {
                                                    callback('badmails', badusers)
                                                }
                                            }

                                        } else {
                                            // impossible dajouter le sender
                                        }
                                    } catch (e) {
                                        // probleme dans l'ajout du sender
                                    }


                                } else {
                                    // impossible de create le message
                                }
                            } catch (e) {
                                // problem dans la creation du message
                            }
                        })
                    } else {
                        // bad token

                    }
                } else {
                    console.error(e); // something went wrong
                    //  console.log('erreur user nulll');
                }
            } else {
                //console.log('erreur impossible de recup le user');
                console.error(e); // something went wrong

            }
        });


    }


});

0 个答案:

没有答案