无法GET /socket.io/?EIO=3&transport=polling&t=LdmmKYz

时间:2017-01-30 19:27:56

标签: node.js sockets express socket.io ionic2

我的node.js服务器和我的离子2与socket.io(websocket)通信有问题。

我的离子应用程序发送此错误:

Cannot GET /socket.io/?EIO=3&transport=polling&t=LdmmKYz

这是我的代码,我没有发现我的错误。

我的node.js代码(使用快递):

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

app.use( (req, res, next) => {
   res.header("Access-Control-Allow-Origin", "http://localhost:8100"); //The ionic server
   res.header("Access-Control-Allow-Credentials", "true");
   res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
   next();
});
var port = Number(process.env.PORT || 8810);

io.on('connection', function (socket) {
    console.log('ping-pong started');
    socket.emit('news', { hello: 'world' });
    socket.on('my other event', function (data) {
        console.log(data);
    });
});

这是离子2应用程序代码(在构造函数内):

this.connect = () => {
    this.socket = io('http://localhost:8810');
    console.log('socket started');

    this.socket.emit('connect', {data: 'data'});
        this.socket.on('news', (data)=>{
        console.log(data);
       this.socket.emit('my other event', { my: 'data' });
    });
}
this.connect();

我错过了什么?

2 个答案:

答案 0 :(得分:16)

我发现了我的问题!

我的问题出在服务器代码:

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

这就是问题所在。

我需要定义socket.io在没有套接字失败的情况下监听的位置。

更改它,错误就会消失。

答案 1 :(得分:7)

如果您使用快递4,请按照确切的顺序尝试。

containerconfiguration

请参阅此处的API参考http://expressjs.com/en/4x/api.html