【发布时间】:2019-03-16 18:19:44
【问题描述】:
我正在使用 Express 和 Socket.io 制作 NodeJS 应用程序。我正在尝试以对象的形式从服务器向客户端发送一些数据,并且我希望在加载页面时发生这种情况。然后,可以使用接收到的对象更改一些 HTML。我很确定 Socket.io 可以做到这一点。但是,当使用window.onload = function() {...} 时,没有任何反应。 window.onload 甚至没有被调用。
当我在不使用 NodeJS(仅使用 HTML 页面)的情况下尝试此操作时,它可以正常工作。 window.onload 被调用,一切顺利。那么为什么这在 NodeJS 中不起作用呢?我知道它等待所有图像等加载并且有a problem with that,但现在大部分已经解决了。图片加载正常。 (我仍然无法使用background-image 加载它,这有什么不同吗?)
另外,我是否以正确的方式将数据从服务器发送到客户端?我宁愿使用 Socket.io,也不愿学习 Angular 或 React 之类的新东西。
这是我的代码:
main.js(客户端)
window.onload = function() {
console.log('window loaded'); // this shows when not in NodeJS app
alert('window ready'); // neither does this
socket.emit('pageReady'); // so this doesn't run
}
socket.on('pageInfo', function(response) {
console.log('page info received'); //this doesn't run either
document.getElementById("schoolName").innerHTML = response.school_name;
});
app.js(服务器)
io.on('pageReady', function() {
io.emit('pageInfo', response); // response is defined earlier
console.log('page ready recieved'); // this doesn't show
});
【问题讨论】:
标签: javascript html node.js express socket.io