ember-cli-mirageredirectsocket.io客户端,注入海市蜃楼

在这里发生的问题是,当我通过node.js连接示例socekt.io客户端与此socket.io服务器(只是运行两个terminal,并打开客户端和服务器之间的套接字连接),我没有问题。

但是,当我试图将这个socket.io-client注入到我的Ember.js应用程序中时,恰恰来自ember-cli-mirage,它将我的客户端从给定的地址redirect到:
('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); } 

如果你调用this.passthrough()没有参数,它只允许当前域的请求通过。 它看起来像websocket连接在不同的端口,所以请尝试直接指定它:

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

有关更多信息,请参阅文档 。

Interesting Posts