gpt4 book ai didi

javascript - socket.io 中的 SetTimeout 第一次不起作用

转载 作者:行者123 更新时间:2023-12-02 16:32:33 28 4
gpt4 key购买 nike

我正在研究一种从动态 IP 上托管的 Node 服务器获取 IP 地址的解决方案。我遇到的问题是函数 setTimeout 在第一次启动时在服务器端不起作用。我必须刷新才能看到它正常工作。

服务器端代码:

io.sockets.on('connection', function(socket){

setTimeout(function() {
ip = socket.handshake.headers.host;
socket.broadcast.emit('ip', {ip: ip})
}, 30000);

});

客户端代码

var socket = io.connect();

socket.on('ip', function(data){;
alert(data.ip);
});

事实上,在我的客户端第一次启动时,警报或 console.log 不会显示 IP 地址。如果我刷新页面一切正常。

你有办法帮我解决吗?

谢谢

最佳答案

问题是您没有向刚刚连接的套接字发出信号,而是向所有其他套接字发出信号,因此在客户端收到 "ip" 消息之前,您必须与服务器建立第二个连接.

改变

socket.broadcast.emit('ip', {ip: ip})

socket.emit('ip', {ip: ip})

关于javascript - socket.io 中的 SetTimeout 第一次不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28167509/

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