javascript - 如何让 javascript 捕获来自 Node 的信号并在之后立即提示一个窗口?

标签 javascript node.js

我想从 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/

相关文章:

javascript - 无法使用 AngularJS 访问 JSON 对象

javascript - IE 10,除非控制台打开,否则我的 js 会损坏

node.js - 无法安装 node_modules

javascript - Backbone.View 事件只触发一次

javascript - 如何保留输入的输入值并用带有更新值的标签显示它

javascript - 移动日期但跳过 datepicker jquery 中禁用的日期?

node.js - 将 NodeJS 连接对象保存在共享数据库/内存中

node.js - 使用 Jade 有什么好处

mysql - 将 npm api 连接到 MySQL 时 docker ECONNREFUSED

node.js - AWS Cognito + 我自己的使用 DynamoDB 的身份解决方案?