我想从 app.js 发出信号。 ejs 文件应该捕获它并提示一个窗口。问题是我必须刷新页面才能看到该窗口。而且如果我再次刷新它似乎总是会显示。
如何让app.js发出信号后立即弹出窗口提示?并且只显示一次?
在app.js中
socket.emit('example_signal')
在sample.ejs文件中
socket.on('example_signal', function(){
alert('hello world')
})
看来我找到了这个问题的原因。如果我写
io.sockets.emit('example_signal')
直接,那么信号将立即被捕获。如果我写成
io.sockets.on('connection', function (socket) {
io.sockets.emit('example_signal')
})
它会以某种方式等待页面刷新...
希望可以帮助到遇到同样问题的人
最佳答案
io.sockets.on('connection', function (socket) { io.sockets.emit('example_signal') })
it will somehow wait for the page refresh...
因为这就是代码所说的:
当浏览器连接到套接字时,发出信号
…页面加载时浏览器将连接到套接字。
删除等待新连接的事件处理程序自然会导致 io.sockets.emit('example_signal') 行立即运行,而不是等待事件。
关于javascript - 如何让 javascript 捕获来自 Node 的信号并在之后立即提示一个窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47699963/