2017-10-16 60 views
0

我不知道爲什麼找不到文件。從我讀的文檔中,socket.io應該自動公開。nodejs - socket.io找不到

錯誤:

polling-xhr.js?bd56:264 GET http://localhost:8081/socket.io/?EIO=3&transport=polling&t=LyYgQtO 404 (Not Found) 

這裏是我的代碼:

服務器:

const cors = require('cors') 
var express = require('express') 
var app = express() 
var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); // support json encoded bodies 
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies 

var whitelist = ['http://localhost', 'http://localhost:8080', 'http://127.0.0.1:8080', 'http://127.0.0.1'] 
var corsOptions = { 
    credentials: true, 
    origin: function (origin, callback) { 
    if (whitelist.indexOf(origin) !== -1) { 
     callback(null, true) 
    } else { 
     callback(new Error('Not allowed by CORS')) 
    } 
    }, 
    optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 
} 

app.use(cors(corsOptions)) 

var http = require('http').Server(app); 
var io = require('socket.io')(http); 
// app.options('*', cors()) 

var db = require('./db.js') 

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

app.post('/', cors(corsOptions), (req, res) => { 
    res.send("post test\n" + req.body.test) 
}) 

app.get('/', cors(corsOptions), (req, res) => { 
    res.send("works\n") 
}) 

app.listen(8081,() => { 
    console.log('API listening on port 8081') 
}) 

前端:

<template src="./templates/Test.html"></template> 

<script> 
    import io from 'socket.io-client' 

    export default { 
     name: "test", 
     mounted: function() { 
      io.connect("http://localhost:8081") 
     } 
    } 
</script> 

回答

0

啊,好像我只是需要做另一個表達的東西,在這裏e更新服務器:

const cors = require('cors') 
var express = require('express') 
var app = express() 
var bodyParser = require('body-parser'); 
app.use(bodyParser.json()); // support json encoded bodies 
app.use(bodyParser.urlencoded({ extended: true })); // support encoded bodies 
// app.use(cors()) 

var whitelist = ['http://localhost', 'http://localhost:8080', 'http://127.0.0.1:8080', 'http://127.0.0.1'] 
var corsOptions = { 
    credentials: true, 
    origin: function (origin, callback) { 
    if (whitelist.indexOf(origin) !== -1) { 
     callback(null, true) 
    } else { 
     callback(new Error('Not allowed by CORS')) 
    } 
    }, 
    optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204 
} 

app.use(cors(corsOptions)) 

var appSocket = express() 
var http = require('http').Server(appSocket); 
var io = require('socket.io')(http); 
// app.options('*', cors()) 

http.listen(8082) 

var db = require('./db.js') 

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

app.post('/', cors(corsOptions), (req, res) => { 
    res.send("post test\n" + req.body.test) 
}) 

app.get('/', cors(corsOptions), (req, res) => { 
    res.send("works\n") 
}) 

app.listen(8081,() => { 
    console.log('API listening on port 8081') 
})