我要解决的问题是,我们有一个具有移动客户端和仅管理员身份的Web客户端的应用程序,它们都使用Socket.IO/Feathers客户端连接到后端。
我想通过确定请求是否来自管理客户端来应用钩子或以其他方式修改查询或响应的方法。
通过到目前为止的尝试,我发现我无法使用Socket访问服务器端的标头,例如始发客户端URI(即确定请求是否来自admin.mysite.com)。 .IO提供者,以及该adding headers via the Socket.IO doesn't work when the transport is set to websockets because of the spec。
我也研究了一个好主意的渠道,但是示例将人们置于基于用户数据而非请求数据的渠道中。
有人知道实现此目标的合理方法吗?
答案 0 :(得分:1)
Feathers Socket.io transport documentation显示了如何pass information from Socket.io to Feathers。 socket.request
包含发起HTTP请求的信息。
app.configure(socketio(function(io) {
io.use(function (socket, next) {
socket.feathers.isSomeServer = socket.request.connection.remoteAddress === myServerIp;
next();
});
}));
现在您可以检查params.isSomeServer
。