Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 套接字io的传输错误_Javascript_Angular_Socket.io - Fatal编程技术网

Javascript 套接字io的传输错误

Javascript 套接字io的传输错误,javascript,angular,socket.io,Javascript,Angular,Socket.io,我试图在断开与套接字io的连接时将用户名发送到后端,当我在取消订阅套接字连接时将用户名作为参数传递给后端时,它给了我一个问题传输错误 这是我的密码 客户端“连接”只是一个变量: messages = []; connectedUsers = []; connection; message; Username = JSON.parse(localStorage.getItem('user')).username; users

我试图在断开与套接字io的连接时将用户名发送到后端,当我在取消订阅套接字连接时将用户名作为参数传递给后端时,它给了我一个问题传输错误

这是我的密码

客户端“连接”只是一个变量:

      messages = [];
      connectedUsers = [];
      connection;
      message;
      Username = JSON.parse(localStorage.getItem('user')).username;
      users = [];

ngOnDestroy() {
    this.connection.unsubscribe({username: 'emons'});
}
服务器端这是我处理emit的控制台日志的地方。控制台日志可以正常工作,但“console.log(usersConnected[I]+“was拼接”)”不起作用,因为从未满足以下条件:

const app = express();

const port = 3000;
const server = http.Server(app);
const io = socketIo(server);

var usersConnected = [];

    io.on('connection', function(socket){
        console.log('a user connected');
        /*socket.on('new-connection', function(user) {
            io.sockets.emit('newUser', {type: 'new-connection', username: user});
        }); */


        socket.on('disconnect', function(user){
            console.log(user + '   jsjasdjbskjcbawsjbsajdbasjabdsj')
            for (var i = 0; i < usersConnected.length; i++) {
                if (user.username == usersConnected[i]) {
                    usersConnected.splice(i, 1);
                    console.log(usersConnected[i] +' was spliced')
                };
            } 
            console.log(usersConnected);
            console.log('user disconnected');
        });


        socket.on('add-message', function(msg){
            console.log('added message');
            io.sockets.emit('message', {type: 'new-message', username: msg.user, text: msg.message});
        });
        //trying to get all the users.
        socket.on('chat-connection', (data) => {
            socket.join(data.username);
            console.log(data.username);
            usersConnected.push(data.username);
            io.emit('new-user', usersConnected);
        })


    });

我认为您的服务器端可以:

let allClients = [];

socket.on('connection', function(client) {
    allClients.push(client);

    client.once('disconnect', function() {
        console.log('Got disconnect!');

        client.disconnect();
        var i = allClients.indexOf(client);
        allClients.splice(i, 1);
    });

    client.on('LEAVE_ROOM', function (data) {
        console.log('Got disconnect!', data);

        client.disconnect();
        var i = allClients.indexOf(client);
        allClients.splice(i, 1);
    });
});
$(window).on('beforeunload', function(){
    socket.emit('LEAVE_ROOM', reason);
});
断开连接
网络断开连接事件。您可以在初始化SocketIO服务器时设置超时:

PoTimeOUT(号码):有多少MS没有一个包考虑连接关闭(60000)< /P> 客户端可以是:

let allClients = [];

socket.on('connection', function(client) {
    allClients.push(client);

    client.once('disconnect', function() {
        console.log('Got disconnect!');

        client.disconnect();
        var i = allClients.indexOf(client);
        allClients.splice(i, 1);
    });

    client.on('LEAVE_ROOM', function (data) {
        console.log('Got disconnect!', data);

        client.disconnect();
        var i = allClients.indexOf(client);
        allClients.splice(i, 1);
    });
});
$(window).on('beforeunload', function(){
    socket.emit('LEAVE_ROOM', reason);
});

好奇的是,您是否访问了控制台日志?我获得了控制台日志,但“usersConnected[I]…”除外,因为打印时user=transport错误,因此从未满足此条件。您的
此连接是什么。取消订阅
功能?我已尝试实现此功能,但不幸的是,我没有成功。无论如何,您是否可以在我使用的表单中实现代码,即使用已传递的套接字,我为上下文添加了额外的代码。我正处于截止日期,因此提出了一个不寻常的请求。@Samlemonts您是否尝试发送此
socket.emit('LEAVE_ROOM',reason')来自客户端?