2017-07-04 31 views
1

何らかの理由で、私はクローム開発ツールネットワークの下を見ると "http://127.0.0.1:3000/socket.io/socket.io.js" 404が見つかりません。以前はうまくいっていたので、なぜこれが機能していないのか理解しようと1時間以上過ごしました。何も変わったとは思えませんでした。Socket.io 404が見つかりません

サーバー:

var express = require('express'), 
    session = require('express-session'); 

var app = express(); 

var server = require('http').Server(app); 
var io = require('socket.io')(server); 
var MongoStore = require('connect-mongo')(session); 

var sessionMiddleware = session({ 
    resave: false, 
    saveUninitialized: false, 
    secret: 'secret', 
    store: new MongoStore({url: "mongodb://localhost:27017/database"}) 
}); 

app.use(sessionMiddleware); 



io.use(sessionMiddleware, function(socket, next) { 
    sessionMiddleware(socket.request, socket.request.res, next); 
}); 

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

app.set('view engine', 'pug'); 
app.use(express.static(__dirname + '/public')); 

app.get('/', function(req, res) { 
    res.render('index'); 
}); 

app.listen(3000); 
console.log('listening'); 

パグファイル:JavaScriptの

html 
    head 
     script(src="http://127.0.0.1:3000/socket.io/socket.io.js") 
     script(type='text/javascript', src='../javascripts/chat.js') 
    body 

クライアント:

try { 
    var socket = io.connect('http://127.0.0.1:3000'); 

} catch(e) { 
    console.log(e); 
} 
+0

ウェブページを読み込むためにブラウザに読み込んだURLは何ですか? – jfriend00

答えて

4

変更この:

app.listen(3000); 

:あなたはsocket.ioに接続しているサーバが、実際に聞いているものではありませんので

server.listen(3000); 

app.listen()は新しく、別のサーバーを作成し、そのため、あなたのsocket.ioサーバができ生活していないされていませんスクリプトファイルが最初に読み込まれなかった場合は、/socket.io/socket.io.js要求または着信接続を処理します。

行い、それはあなたがあなたのコードがレイアウトされている方法を望むものではありません、なぜ何app.listen()の詳細については、この回答を参照してください:、

websockets, express.js and can’t establish a connection to the server


注意、あなたがapp.listen()を使用することができますがあなた自身のサーバーを作成しなければならず、戻り値をapp.listen()から取得して、それをsocket.io初期化に渡すサーバーとして使用する必要があります。

あなたのコードがどのように構造化されているかはわかりませんが(あなたはこのようにするために物事を並べ替えることができます)。

関連する問題