2017-08-09 10 views
0

問題を解決するにはあなたの助けが必要です。 私はexpressとsocket.ioを使用して、クライアントサイドのJavaScript(クライアント側のソケット接続)をサーバ側のコードよりも先にプリロードしようとしています。問題は、サーバー側でサーバー側コードの前にjavascriptを読み込むためのレンダーエクスプレス

socket.on("resultStep", function(foo) { 
    console.log("coucou", foo); 
}); 

:(socket.jsファイルに)

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関数を使用することはできません。

このような問題をどのように解決できますか? アドバイスいただきありがとうございます。

答えて

0

emit()メソッドは、HTMLファイルがクライアントに提供された直後に実行されます。明らかに、クライアントはページをレンダリングしたり、JSコードを解釈したり、Webソケット呼び出しを待機したりするのに十分速くはなりません。サーバがemit()、独自にに応答すること

  • があなたのJSコードクライアント側emit()に追加します。

    は、次のいずれかにする必要があります。これにより、クライアントがサーバーと対話する前にページが完全にレンダリングされるようになります。

  • "foo"からres.render()メソッドを渡す。これは、ただちにWebソケット呼び出しを行うことなく、クライアントに送信されます。
関連する問題