【发布时间】:2019-04-04 19:38:20
【问题描述】:
此问题发生在我的应用程序的客户端。 我遇到了一个问题,我的 Node 应用程序上没有命中 socket.on 事件。这通常发生在客户端第一次加载站点时。加载时,选项卡通常具有在 Javascript 中动态生成的数据,但是由于未命中 socket.on 事件,因此该内容未加载,导致选项卡为空白(基本 Pug/Jade 文件仍在呈现- 只是没有动态内容)。刷新页面通常可以解决问题,并且套接字会再次开始接收数据。
没有直接的错误信息被输出,socket.on 事件只是没有被命中。一旦页面重新加载并且不是 100% 的时间发生,这似乎也会自行解决。
这更不寻常,因为在调试模式下运行我的节点服务器时,它显示了 socket.io-parser 编码数据和 socket.io-client 写入数据,这意味着它正在发出,只是没有由我客户端的 socket.on 接收。
注意这里已经简化了
io.sockets.on('connection', function (client) {
sendExampleData();
});
function sendExampleData() {
mysqlFunc.getOrderData(function(rows){
io.emit('example_data', rows);
})
}
socket.on('example_data', function (rows) {
console.log(rows);
}
我希望在页面加载时发出数据,并且 socket.on 事件将接收此数据,准备好进行处理。目前,虽然不是每次都发生,但 socket.on 没有被击中,数据也没有被抓取。
在调试模式下运行服务器时没有什么异常,任何想法都会非常有帮助。如果有任何其他有助于调试此问题的信息,请告诉我。
提前致谢!
【问题讨论】:
-
发射:
io.emit('example_data'),收听:socket.on('solvitt_data'),正常吗? -
只是我试图简化代码,现在编辑,为那个道歉!
-
socket.io 备忘单很容易理解。 socket.io/docs/emit-cheatsheet 在您发出事件之前(无论是服务器还是客户端),您都应该等待连接事件。您可以编辑您的问题:这是在服务器/客户端吗?
-
嗨,马克,感谢您的回复。问题出在客户端,没有呈现数据。我认为问题不在于发出事件,而在于 on 事件。我将编辑问题以更清楚地了解服务器/客户端。
标签: javascript node.js express socket.io