表达渲染以在服务器端代码之前加载javascript

时间:2017-08-09 14:39:05

标签: express socket.io

我需要你的帮助才能解决问题。 我使用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函数。

我该如何解决这类问题? 感谢您的建议。

1 个答案:

答案 0 :(得分:0)

在将HTML文件提供给客户端之后运行您的emit()方法。显然,客户端不能快速呈现页面,解释JS代码,然后开始收听Web套接字调用。

您需要:

  • 在您的JS代码中添加一个客户端emit(),服务器将使用自己的emit()进行响应。这将确保客户端在与服务器交互之前完全呈现页面。
  • 通过"foo"方法传递res.render()。这将立即发送到客户端,无需单个Web套接字调用。