Проблема, которая возникает здесь, заключается в том, что когда я соединяюсь между образцом 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
Я также вставить скриншот ошибки из инспектировать консоли в браузере:
Есть ли у вас какие-либо идеи, как решить эту проблему? Спасибо заранее, и я также надеюсь, что тема не дублируется.
// 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);
}
Благодарим вас за ответ, но у меня все еще есть проблема. Я могу подключиться к моему серверу, но это соединение нестабильно - оно отключается так же быстро, как и при подключении к серверу. Похоже, мираж вызовет мой метод соединения в цикле. Все еще не знаете, как его решить, есть ли у вас какие-либо идеи? – tekobylinski
Можете ли вы опубликовать моментальный снимок этой ошибки? Также не стесняйтесь присоединяться к # ec-mirage в слабине Ember –
Извините за то, что тратил свое время, мой друг нашел решение этой проблемы, которую я пропустил - [тема с решением] (http://stackoverflow.com/questions/28238628/ socket-io-1-x-use-websockets-only). Еще раз спасибо за вашу помощь! – tekobylinski