2017-08-29 3 views
0

私はExpress.jsでnode.jsよりもsocket.ioを使用しています。 htmlページを提供すると、スクリプトタグにsocket.io.jsファイルのリンクがハードコードされています。 <script src="/socket.io/socket.io.js"></script>クライアント上のSocket.ioパス、node.jsサーバーのディレクトリツリーとどのように一致させるか?

これは私のディレクトリツリーとどのように一致させるべきかわかりません。以下のようになります:

enter image description here

それはnode_modules」フォルダにダウン埋葬存在します。

私のindex.jsは、次のようになります。あなたはソケットポートを聴き始めるとき

const PORT = 3000; 
const express = require("express"); 
const server = express(); 
const http = require("http").Server(server); 
const path = require("path"); 
const io = require("socket.io")(http); 

server.use(express.static(path.join(__dirname + "/public"))); 
server.use(express.static(__dirname + "/public/css")); 
server.use(express.static(__dirname + "/public/js")); 


server.listen(PORT, function() { 
     console.log("server listening on port " + PORT); 
}); 

io.on("connection", function(socket){ 
     console.log("user connected"); 
}); 

答えて

1

はあなただけhttp.listenからserver.listenを変更する必要があり、それはそれは上記の私のコードでの動的に役立っなっているパスです

+0

素晴らしい、それはそれを修正しました。 – erv

0

socket.ioファイルは、ノード・サーバによって動的に提供しています。ディレクトリ構造には存在しません。

あなたの場合は、スクリプトパスをhttp://YOUR_NODE_SERVER_HOST_NAME:SOCKET_PORT/socket.io/socket.io.jsとして追加する必要があります。

私の場合、それはhttp://localhost:3000/socket.io/socket.io.jsです。

+0

に動作します。だから、私はそれをハードコードするときに私は同じエラーが発生します(時にはそれは404エラーと言われています、それはちょうどそのURLと、HTMLファイルの行へのリンクとの赤い十字エラーです)。 コンソール) – erv

関連する問題