【问题标题】:Cannot GET /socket.io/?EIO=3&transport=polling&t=LdmmKYz无法获取 /socket.io/?EIO=3&transport=polling&t=LdmmKYz
【发布时间】:2017-06-16 02:00:46
【问题描述】:

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

我的 ionic 应用发送此错误:

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

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

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

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

这是 ionic 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();

我错过了什么?

【问题讨论】:

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


    【解决方案1】:

    我发现了我的问题!

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

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

    这就是问题所在。

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

    更改它,错误就会消失。

    【讨论】:

    • 节点和socket可以运行在同一个端口上,只需要同时监听端口即可。 // 创建socket需要的http服务器 var server = require('http').Server(app); // 将服务器分配给套接字 var io = require('socket.io')(server); server.listen(4000)
    【解决方案2】:

    如果您使用的是 express 4,请按确切顺序尝试此操作。

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

    参考API参考here

    【讨论】:

    • 这是一篇旧帖子,但非常感谢!几天来我一直在扯头发,试图让它发挥作用:)
    猜你喜欢
    • 2020-10-16
    • 2017-03-11
    • 2019-12-15
    • 2021-07-09
    • 2015-11-01
    • 2016-03-08
    • 2019-11-23
    • 1970-01-01
    • 2017-02-25
    相关资源
    最近更新 更多