Node.js Socket.io在某些客户端网络上不工作
我有一个聊天应用程序,使用nodejs和socket.io,运行在公用服务器的端口49158上,因此我不能使用标准端口80 在某些网络中,客户端可以使用套接字登录,但不能发送任何消息。 提前谢谢 客户端代码:Node.js Socket.io在某些客户端网络上不工作,node.js,socket.io,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.emi
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
}
});
}
});
socket.on('newmsg',函数(数据,回调){
if(data&&data.id&&data.titre&&data.message&&data.emails&&typeof(data.notify_me)==“boolean”&&data.token){
var user=null;
var滴定=data.titre;
var message_content=data.message;
var电子邮件=data.emails;
var notify\u me=data.notify\u me;
var token=data.token;
var id=data.id;
var badusers=[];
//用户验证
get(id,函数(err,已连接的用户){
如果(!err){
用户=已连接的用户;
如果(用户!==null){
//验证du令牌
if((jwt.verify(令牌,'shhhh'))和&(jwt.verify(令牌,'shhhh'))).email==user.email){
//苯教信物
同步(函数(){
//论信条
试一试{
var message=message.create.sync(空{
乳头:乳头,
内容:消息内容,
通知我:通知我
});
如果(消息!==null){
//消息已创建,我们可以添加发件人
试一试{
var sender=message.setSender.sync(空,用户);
如果(发送方!==null){
//关于包裹和电子邮件
for(设i=0;i0){
设destinataire=destinataires[0];
//验证si le用户est在线ou pas
var k=0;
var en_ligne=false;
while(en_ligne==false&&k!=online.length){
如果(在线[k].email==destinataire.email){
en_ligne=真;
}否则{
k++;
}
}
如果(en_ligne==true){
//论fait-un-emit
io.sockets.connected[online[k].socket\u id].emit('newmsg'{
id:message.id,
titre:message.titre,
内容:message.content,
created_at:message.created_at,
通知我:消息。通知我,
用户:用户
});
}
//关于enregistre dans les接收器
//关于enregistre dans les接收器
message.addReceivers(destinataire,{vu:false},函数(err,dest){
如果(!err){
/*如果(enigne==true){
//福利斯特疗养院
getFavoris(函数(err,favoris){
如果(!err){
var z=0;
var-trouve=false;
while(trouve==false&&z!=favoris.length){
如果(favoris[z].email==destinataire.email){
trouve=真;
}否则{
z++;
}
}
如果(trouve==false){
user.addFavoris(目标,函数(err,favoris_添加){
如果(!err){