无法获取 /socket.io/?EIO=3&transport=polling&t=LdmmKYz
Posted
技术标签:
【中文标题】无法获取 /socket.io/?EIO=3&transport=polling&t=LdmmKYz【英文标题】:Cannot GET /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();
我错过了什么?
【问题讨论】:
【参考方案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
【讨论】:
这是一篇旧帖子,但非常感谢!几天来我一直在扯头发,试图让它发挥作用:)以上是关于无法获取 /socket.io/?EIO=3&transport=polling&t=LdmmKYz的主要内容,如果未能解决你的问题,请参考以下文章
socket.io/?EIO=3&transport=polling&t=1345678 不充电
Phaser.js 中的 Node.js 和 Socket.io 未连接 socket.io/?EIO=3&transport=polling
GET http://localhost:8080/socket.io/?EIO=3&transport=polling&t=McNiz_D 404(未找到)
如何从 url 中删除 socket.io EIO 和其他参数
使用 socket.io / nginx / node 时出现 CORS 错误
反应客户端:websocket.js:83 WebSocket 连接到 'ws://localhost:3009/socket.io/?EIO=4&transport=websocket' 失