簡體   English   中英

找不到Socket.io 404

[英]Socket.io 404 Not Found

出於某種原因,當我查看chrome開發者工具網絡時,我不斷發現“ http://127.0.0.1:3000/socket.io/socket.io.js”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');

帕格檔案:

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

客戶端javascript:

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

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

改變這個:

app.listen(3000);

至:

server.listen(3000);

app.listen()創建一個新的,不同的服務器,因此連接到socket.io的服務器不是實際監聽的服務器,因此你的socket.io服務器不活動而且無法處理/socket.io/socket.io.js請求或傳入連接,如果腳本文件沒有首先加載失敗。

有關app.listen()詳細信息以及為什么它不符合您的代碼布局方式,請參閱此答案:

websockets,express.js並且無法與服務器建立連接


注意,您可以使用app.listen() ,但是您必須不創建自己的服務器,並且必須從app.listen()捕獲返回值並將其用作傳遞給socket.io的服務器。初始化:

var app = express();
var server = app.listen(3000);
var io = require('socket.io')(server);

這與您的代碼結構不完全相同(但您可以通過這種方式重新排列代碼)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM