【问题标题】:nodejs - socket.io not foundnodejs - 未找到socket.io
【发布时间】:2018-03-27 10:55:14
【问题描述】:

我不确定为什么找不到该文件。从我阅读的文档中,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>

【问题讨论】:

    标签: javascript node.js socket.io vue.js


    【解决方案1】:

    啊,看来我只需要再做一个快递,这里是更新的服务器:

    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')
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-08
      • 2021-03-31
      • 1970-01-01
      • 1970-01-01
      • 2017-09-27
      • 2013-11-06
      • 2013-10-25
      • 1970-01-01
      相关资源
      最近更新 更多