Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js socket.io侦听器工作不正常_Javascript_Ios_Node.js_Sockets - Fatal编程技术网

Javascript node.js socket.io侦听器工作不正常

Javascript node.js socket.io侦听器工作不正常,javascript,ios,node.js,sockets,Javascript,Ios,Node.js,Sockets,我与私人信息聊天,但私人信息不起作用。 这是app.js var express=require('express')、http=require('http'); var-app=express(); var server=http.createServer(app); 控制台日志(“Hola”); app.set('views','u dirname+'/views'); 应用程序使用(express.static(_dirname)); app.get('/',函数(req,res){ r

我与私人信息聊天,但私人信息不起作用。 这是app.js

var express=require('express')、http=require('http');
var-app=express();
var server=http.createServer(app);
控制台日志(“Hola”);
app.set('views','u dirname+'/views');
应用程序使用(express.static(_dirname));
app.get('/',函数(req,res){
res.render('index.jade',{layout:false});
});
app.post(“/”,函数(请求,res){
如果(请求会话记录)
{
res.send('欢迎回来!');
log(“欢迎回来!”);
}
其他的
{
req.session.logged=true;
res.send('欢迎!');
控制台日志(“欢迎”);
}
});
监听服务器(1080);
函数tstamp(){
var currentTime=新日期();
var天数=新数组('Dom'、'Lun'、'Mar'、'Mie'、'Jue'、'Vie'、'Sab');
var day=currentTime.getDay();
var hours=currentTime.getHours();
var minutes=currentTime.getMinutes();
如果(分钟<10){
分钟=“0”+分钟;
}
如果(小时数>11){
var ap=‘p’;
}
否则{
var ap='a';
}
如果(小时数>12){
小时=小时-12;
}
返回“[”+天[天]+“+小时+”:“+分钟+ap+”米]”;
}
//网袋
var io=require('socket.io')。侦听(服务器);
var usuariosConectados={};
var usuarisid={};
io.sockets.on('connection',函数(socket){
socket.on('environmbre',函数(dato){
if(通常是连接数据)
emit('errorName');
其他的
{
//将昵称存储在此客户端的套接字会话中
socket.nickname=dato;
//控制台日志(“El-usuario es:+dato”);
USUARIOSCONNECTADOS[dato]=socket.昵称;
usuarisid[dato]=socket.id;
}
sId=[dato,USUARISID];
数据=[dato,通常为连接数据];
io.sockets.emit('mensaje',数据);
});
socket.on('enviramensaje',函数(mensaje){
var数据=[socket.昵称,mensaje];
io.sockets.emit('newMessage',data);
});
socket.on('mensajePrivado',函数(targetUser,msg){
//console.log(sId[1][targetUser]);
//控制台日志(msg);
//console.log(socket.id);
console.log(tstamp());
io.sockets.socket(sId[1][targetUser]).emit('newPrivado',tstamp(),socket.昵称,targetUser,msg);
sockets.socket(socket.id).emit('newPrivadoSender',tstamp(),socket.昵称,targetUser,msg);
});
socket.on('disconnect',function()){
console.log(“Entro a disconnect”);
删除USUARIOSCONNECTADOS[socket.昵称];
data=[usuariosconnectados,socket.昵称];
io.sockets.emit('usuarioDesconectado',data);
});

});好问题出在这部分:

io.sockets.socket(sId[1][targetUser]).emit('newPrivado', tstamp(), socket.nickname, targetUser, msg);
    io.sockets.socket(socket.id).emit('newPrivadoSender', tstamp(), socket.nickname, targetUser, msg);
我将此替换为:

io.to(sId[1][targetUser]).emit('newPrivado', tstamp(), socket.nickname, targetUser, msg);
    io.to(socket.id).emit('newPrivadoSender', tstamp(), socket.nickname, targetUser, msg);

现在它工作得很好

您是否在节点前面使用代理?错误“Connection”头值必须包含“Upgrade”,表明节点前面有Apache/Nginx/etc,并且它没有为websocketsI设置适当的头。在Plesk Onyx中有Nginx。如何配置?请阅读本文的“虚拟主机配置”部分:nginx没有在我的服务器上运行。另一个原因?