javascript - 如何确定套接字中的变量是否匹配

标签 javascript node.js sockets

我有一个node.js服务器,我使用socket.io在两个html页面之间进行通信。这两个html页面通过套接字发送数据,每个页面都有一个与之关联的实体,例如主机是实体:'主机'和响应者反之亦然。它们都有一个与之关联的名称,该名称相同,可以使它们在 session 中保持“配对”,例如名称:'test'

当服务器接受这些连接时,我很难确定是否已设置。目前我拥有的是:

socket.on('hostResponderStatus', function(msg)
    {
        if(msg.Status == 'Connecting')
        {
            if(msg.Entity == 'Host')
            {
                nameHost = msg.Name; //Grab the Name associated with the host
                socket.emit('StaringGL', {Status: 'Starting', Name: nameHost}); //Send back a socket stating gl is starting 
            }
            if(msg.Entity == 'Responder')
            {
                nameResponder = msg.Name; //Grab the Name associated with the responder
                socket.emit('StaringGL', {Status: 'Starting', Name: nameResponder}); //Send back a socket stating gl is starting 
            }
            if(msg.Name == nameHost && msg.Name == nameResponder) // if the names are the same start the child service
            {
                console.log("host name: "+nameHost);
                console.log("host name: "+nameResponder);
                var child_info = child.fork(__dirname + '/child_proccess/Child'); 
                child_info.send({Name: nameHost});
            }
        }
    });

但我认为它不会到达最后一个 if 语句,因为“主机”和“响应者”都进入自己的 if 子句,并且当它们完成时,套接字将不再被访问。我尝试将 if 子句放入 app.js 的主体中,如下所示:

if(nameHost == nameResponder)
{
    var child_info = child.fork(__dirname + '/child_proccess/Child'); 
    child_info.send({Name: nameHost});
}

但是当 Node 启动时,由于两者都为空,因此相等,它将不断触发。有没有更好的方法来检查主机和响应者是否准备好?

最佳答案

很抱歉告诉你,代码逻辑有点困惑。

msg.Entity 应该具有值“Host”或“Responder”,因此变量 nameHostnameResponder 永远不会相同,因为两者都是在不同的 if 条件下设置的。

如果您尝试在 if 条件之外设置 nameHostnameResponder,则两者将是相同的,因为它们被分配给相同的对象属性msg.Name.

您确实需要再次遍历逻辑。

关于javascript - 如何确定套接字中的变量是否匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29393122/

相关文章:

javascript - 在命名空间内设置标准 JavaScript 原型(prototype)继承?

Node.js+lame - 类型错误 : string is not a function

c++ - 由周期性 sendto()/recvfrom() 延迟引起的 UDP 套接字的周期性延迟峰值,Linux RT-PREEMPT 系统的 C++

ios - 如何定期更新文本字段?

c - 关闭套接字的问题

javascript - 为不同的显示器尺寸自动调整 Shiny webapp 页面

javascript - 使用 javascript 函数参数返回对象值

node.js - app.all ('*' ) 与 app.use(function) 之间的区别?

javascript - 在 JavaScript 应用程序中运行循环

node.js - Sails Js、Node Js 方法