ここで発生する問題は、サンプルの socekt.io クライアントとこの socket.io サーバーを node.js で接続すると (2 つの端末を実行し、クライアントとサーバーの間でソケット接続を開くだけです)、問題がないことです。
しかし、この socket.io-client を Ember.js アプリケーションに挿入しようとすると、正確に ember-cli-mirage に指定されたアドレスからクライアントがリダイレクトされます:
( 'http: //localhost:8080') の
ようなものに
http: //localhost:8080/socket.io/?EIO=3&transport=polling&.....
また、Mirage は、正確な名前空間を設定したり、 wsClient.connect()メソッド
をルーティングしたりしても、処理できないエラーを表示します。wsClient.connect()を呼び出す前にthis.passthrough () を呼び出します。
また、ブラウザーの検査コンソールからのエラーのスクリーンショットを貼り付けます。
この問題を解決する方法はありますか? 前もって感謝します。また、トピックが重複しないことを願っています。
// 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);
}