javascript - if 语句阻止套接字向客户端发送消息

标签 javascript node.js websocket socket.io

我的代码遇到了一些非常奇怪的事情。我有一个使用套接字更新聊天室的功能。一切都很顺利,直到我得到房间里的客户数量。

function updateChatRoom(user, gender, vip, firstname, message, latitude, longitude, room, updateUser)
    {
        const messageDetails =
        {
            gender: gender,
            vip: vip,
            firstname: firstname,
            content: message
        }

        /*********** IF I DELETE THIS IF STATMENT, IT SENDS TO THE USER ********/
        if (user.in('/').adapter.rooms[room].length)
        {
            messageDetails.roomLength = user.in('/').adapter.rooms[room].length;
        }
        /*********** IF I DELETE THIS IF STATMENT, IT SENDS TO THE USER ********/

        if (latitude && longitude && typeof latitude == 'number' && typeof longitude == 'number')
        {
            messageDetails.latitude = latitude;
            messageDetails.longitude = longitude;
        }

        if (updateUser)
        {
            console.log("sending to user"); //Always runs, regardless if the if statment is there or not
            user.emit('incomingChatMessage', messageDetails); //I only receive this if i delete that if statment
        }
        user.in(room).broadcast.emit('incomingChatMessage', messageDetails); //Always runs
    }

所以如果你能看到中间的 if 语句。这就得到了这个房间里的人数。通过测试和调试,我发现它是正确的。但是,当它在那里时,user.emit 不会运行,或者即使运行,它也不会向用户发送任何内容。

我知道 updateUser 也是 true,因为它总是将“发送给用户”记录到控制台。

如果我简单地删除 if 语句,它就会正常发送。我唯一的猜测是,当我检查房间长度时,我正在更改用户的属性,以便它不再发送给他们?我完全不知道。

此外,最后一行发出房间中除客户端之外的每个人的消息,无论有没有 if 语句都可以使用。

最佳答案

if 代码放入 try...catch block 中,并将异常打印到控制台日志。我认为您的代码中的某个地方有 try...catch block ,其中 catch 为空且不执行任何操作。

关于javascript - if 语句阻止套接字向客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144893/

相关文章:

javascript - 有没有办法在 Node/Webpack 中添加外部 JS 工具?

javascript - React-bootstrap ToggleButtonGroup 调用时使用旧值

multithreading - 使用 angularJS 应用程序提高 Symfony2 的性能

javascript - 无法在 IE 9 中加载谷歌地图 Geojson 数据

java - Android 上的 HighChart 动态更新

javascript - 改变对象的结构 javascript

node.js - nodejs FFMPEG参数问题

node.js - SOAPUI 和 Node.JS/Request-AccessException

java - 使用 Netbeans 和 Tomcat 8 的 Websocket 服务器

logging - 如何从S3获取实时更新