gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 10:26:06 25 4
gpt4 key购买 nike

我有一个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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com