2016-04-22 3 views
1

Проблема, которая возникает здесь, заключается в том, что когда я соединяюсь между образцом socekt.io-клиента с этим сервером socket.io на node.js (просто выполняется два терминала и открытие гнездового соединения между клиентом и сервером) У меня нет проблем.

Но, когда я пытаюсь внедрить этот сокет.io-client в мое приложение Ember.js, именно к ember-cli-mirage он перенаправляет мой клиент с заданного адреса:
('http: // localhost: 8080')
к чему-то вроде
Http: //localhost:8080/socket.io/?EIO=3 & транспорта = опроса & .....
также Mirage показывает мне ошибку, что я не могу справиться, даже путем создания точной пространство имен, маршрутизируя метод wsClient.connect() или вызывающий this.passthrough(), перед вызовом wsClient.connect().ember-cli-mirage перенаправляет клиент socket.io, который вводится в mirage


Я также вставить скриншот ошибки из инспектировать консоли в браузере:

error image


Есть ли у вас какие-либо идеи, как решить эту проблему? Спасибо заранее, и я также надеюсь, что тема не дублируется.

// server.js 
var app = require('http').createServer(handler); 
var io = require('socket.io')(app); 
app.listen(8080); 

function handler(req, res) { 
    res.writeHead(200); 
    res.end('default.index'); 
} 

var rooms = { 
    'room1': [ 

    ], 
    'room2': [ 

    ] 
}; 

io.on('connection', function(socket) { 
    console.log('client connected'); 


    socket.on('join', function(roomName) { 
    rooms[roomName].push(socket.id); 
    socket.join(roomName); 
    }); 

    socket.on('leave', function(roomName) { 
    var toRemove = rooms[roomName].indexOf(socket.id); 
    rooms[roomName].splice(toRemove, 1); 
    socket.leave('roomName'); 
    }); 


    socket.on('eNotification', function(data) { 
    console.log(data); 
    io.to(socket.id).emit('eNotificationCall', data); 
    io.to('room2').emit('eventNotification', data); 
    }); 


    socket.on('gNotification', function(data) { 
    console.log(data); 
    io.to(socket.id).emit('gNotificationCall', data); 
    io.to('room1').emit('diagram1Notification', data); 
    }); 


    socket.on('close', function() { 
    console.log('client disconnected'); 
    }); 

}); 


//client.js 
var wsClient = { 
    socket: null, 
    connect: function() { 
    this.socket = io.connect('http://localhost:8080'); 
    this.socket.on('connect', function() { 

     console.log('mirage client connected!'); 
    }); 

    }, 
    send: function(eventData, graphData) { 
    this.socket.emit('eNotification', eventData); 
    this.socket.emit('gNotification', graphData); 
    } 

}; 
export default wsClient; 



//config.js 
import wsClient from './websockets/client'; 

export default function() { 
wsClient.connect(); 
console.log(wsClient.socket); 
var graphData = {X: "2", Y: "3"}; 
var eventData = {myDAta: 'myDAta', message: 'message'}; 
setInterval(function() { 
    wsClient.send(graphData, eventData); 
}, 5000); 
} 

ответ

2

Если вы звоните this.passthrough() без каких-либо аргументов она позволяет запросы на текущей области в PASSTHROUGH. Похоже, что подключение WebSocket на другой порт, поэтому попробуйте указать его непосредственно:

this.passthrough('http://localhost:8080/**'); 

См the docs для получения дополнительной информации.

+0

Благодарим вас за ответ, но у меня все еще есть проблема. Я могу подключиться к моему серверу, но это соединение нестабильно - оно отключается так же быстро, как и при подключении к серверу. Похоже, мираж вызовет мой метод соединения в цикле. Все еще не знаете, как его решить, есть ли у вас какие-либо идеи? – tekobylinski

+0

Можете ли вы опубликовать моментальный снимок этой ошибки? Также не стесняйтесь присоединяться к # ec-mirage в слабине Ember –

+0

Извините за то, что тратил свое время, мой друг нашел решение этой проблемы, которую я пропустил - [тема с решением] (http://stackoverflow.com/questions/28238628/ socket-io-1-x-use-websockets-only). Еще раз спасибо за вашу помощь! – tekobylinski

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