我的node.js服务器和我的Ionic2与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();
我遗漏了什么?
发布于 2017-01-31 04:53:01
我找到我的问题了!
我的问题出在服务器代码上:
var server = app.listen(8810)
var io = require('socket.io').listen(server);
这就是问题所在。
我需要定义socket.io在哪里侦听,而没有它,套接字就失败了。
更改它,错误就会消失。
发布于 2017-08-24 23:43:52
如果您使用的是express 4,请按正确的顺序尝试此操作。
var express = require('express');
var app = express();
var server = app.listen(8810);
var io = require('socket.io').listen(server);
请参阅接口参考here
https://stackoverflow.com/questions/41943929
复制相似问题