我需要你的帮助才能解决问题。 我使用express和socket.io,我尝试在服务器端代码之前预加载我的客户端javascript(我的客户端套接字连接)。
目前,我这样做:
服务器端:
app.get('/branche/:branche', function(req, res) {
res.render('branchebuild', {branchname: branche, listCommande : listCommandeApplis}, function(err, html){
if(html){ //callback dès que le template est chargé
res.send(html);
io.sockets.emit("resultStep", "foo");
}
});
});
客户端(在socket.js文件中):
socket.on("resultStep", function(foo) {
console.log("coucou", foo);
});
问题是服务器端加载比客户端更快,因此客户端无法使用我的socket.js函数。
我该如何解决这类问题? 感谢您的建议。
答案 0 :(得分:0)
在将HTML文件提供给客户端之后运行您的emit()
方法。显然,客户端不能快速呈现页面,解释JS代码,然后开始收听Web套接字调用。
您需要:
emit()
,服务器将使用自己的emit()
进行响应。这将确保客户端在与服务器交互之前完全呈现页面。"foo"
方法传递res.render()
。这将立即发送到客户端,无需单个Web套接字调用。