Ember-cli-Mirage 重定向 socket.io 客户端,该客户端注入 Mirage 中
ember-cli-mirage redirects socket.io client, which is injected in mirage
这里发生的问题是,当我通过节点在示例 socekt.io 客户端与此 socket.io 服务器连接时.js(只是运行两个终端并在客户端和服务器之间打开套接字连接)我没有问题。
但是,当我尝试将此 socket.io 客户端注入我的 Ember.js 应用程序中时,正是为了 ember-cli-mirage,它将我的客户端从给定地址重定向到:('http://localhost
:8080') 到 http://
localhost:8080/socket.io/?EIO=3&传输=轮询&.....
Mirage 还向我展示了一个我无法处理的错误,即使通过设置精确的命名空间、路由 wsClient.connect() 方法或调用 this.passthrough() ,在调用 wsClient.connect() 之前也是如此。
我还粘贴了浏览器中检查控制台的错误屏幕截图:
错误图像
您知道如何解决此问题吗?提前感谢您,我也希望该主题不重复。
// 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/**');
有关详细信息,请参阅文档。
相关文章:
- 客户端服务器REST API captcha实现
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- 如何使用Socket.io将命令从客户端发送到服务器
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- Meteor方法在客户端返回null,在客户端运行的相同方法返回正确的值
- 从客户端获取修改后的对象,并将其与服务器上的原始对象组合
- 如何将我的javascript库公开给其他客户端使用
- 是否可以使用JavaScript/AAJAX在客户端创建一个文件
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 返回/从Twit's客户端.get
- 将客户端特定的日期格式返回到服务器MVC4
- MobileFirst:在客户端运行计时器作业-最佳选项
- Meteor:在启动时将html注入客户端文件
- 如何防止在客户端/服务器两侧对文本框进行sql注入
- 如何将 Node.js 环境变量注入客户端 JavaScript
- Ember-cli-Mirage 重定向 socket.io 客户端,该客户端注入 Mirage 中
- 访问 aspx 页的客户端 javascript 块中由 RegisterClientScriptBlock 注入的 J
- CasperJS注入的客户端javascript没有完全加载
- 我可以保护我的网站从客户端广告注入
- 防止Javascript中潜在的客户端代码注入