2017-01-30 1 views
4

Привет У меня есть проблема с моим Node.js сервером и мой ионными 2 с Socket.io (WebSocket) связью,не может получить /socket.io/?EIO=3&transport=polling&t=LdmmKYz

мое приложение посылает ионное эта ошибка:

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

что мне не хватает?

ответ

8

Я нашел свою проблему!

моя проблема была в коде сервера:

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

только это была проблема.

Мне нужно было определить, где сокет.io прослушивает без него сокет.

измените его, и ошибка исчезнет.

+0

Node и сокет может работать на том же порту, только мы должны сделать слушать порт в то же время. // Создание HTTP-сервера, требуемого сокетом var server = require ('http'). Сервер (приложение); // Назначить серверу сокету var io = require ('socket.io') (сервер); server.listen (4000) –

1

Попробуйте это в точном порядке, если вы используете экспресс 4.

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

Обратитесь к руководству по API здесь http://expressjs.com/en/4x/api.html

Смежные вопросы