Sails js 订阅由 groupid 属性限定范围的模型更改
Sails js subscribe to model changes scoped by groupid attribute
我有一个名为 Groupfeed 的模型,它看起来像这样
module.exports = {
schema:true,
attributes:
{
groupid:
{
model:'groups',
required:true
},
postid:
{
model:'post',
required:true
},
objectid:
{
model:'objects',
required:true
},
}
};
在客户端,我可以使用
订阅 Groupfeed 模型
io.socket.get('/groupfeed')
由蓝图自动完成api
然后
io.socket.on('groupfeed',function(obj){console.log(obj)})
当我使用
在后端发布时,会给我关于模型更改的更新
Groupfeed.publishCreate({id:4,groupid:6,postid:2,objectid:1})
我想要的:-
我希望客户仅订阅来自特定组 ID 的组源。
例如:用户 X 可以从 groupid 1 订阅 groupfeeds(注意:组模型存储组的用户成员资格)
或者类似于这个假想的电话:
io.socket.get('/groupfeed?groupid=5')
因此,当我使用 groupid:5 调用 publishCreate 时,只有订阅了 groupid 5 的 groupfeed 的人才能获得更新
您最好为群组创建不同的房间。
代码未经测试!
创建一个控制器:
NotificationsController.js
module.exports = {
subscribe: function(req, res) {
// Get groupId of user by your method
.....
.....
var roomName = 'group_' + groupId;
sails.sockets.join(req.socket, roomName);
res.json({
room: roomName
});
}
}
您可以在某处创建通知:
var roomNameForGroup = 'group_' + groupId;
sails.sockets.blast(roomNameForGroup, {id:4,groupid:6,postid:2,objectid:1});
在您看来:
io.socket.on('connect', function(){
io.socket.get('/notifications/subscribe', function(data, jwr){
if (jwr.statusCode == 200){
io.socket.on(data.room,function(obj){
console.log(obj);
});
} else {
console.log(jwr);
}
});
});
我现在无法测试代码,但它看起来可行。
我有一个名为 Groupfeed 的模型,它看起来像这样
module.exports = {
schema:true,
attributes:
{
groupid:
{
model:'groups',
required:true
},
postid:
{
model:'post',
required:true
},
objectid:
{
model:'objects',
required:true
},
}
};
在客户端,我可以使用
订阅 Groupfeed 模型io.socket.get('/groupfeed')
由蓝图自动完成api 然后
io.socket.on('groupfeed',function(obj){console.log(obj)})
当我使用
在后端发布时,会给我关于模型更改的更新Groupfeed.publishCreate({id:4,groupid:6,postid:2,objectid:1})
我想要的:-
我希望客户仅订阅来自特定组 ID 的组源。 例如:用户 X 可以从 groupid 1 订阅 groupfeeds(注意:组模型存储组的用户成员资格)
或者类似于这个假想的电话:
io.socket.get('/groupfeed?groupid=5')
因此,当我使用 groupid:5 调用 publishCreate 时,只有订阅了 groupid 5 的 groupfeed 的人才能获得更新
您最好为群组创建不同的房间。
代码未经测试! 创建一个控制器: NotificationsController.js
module.exports = {
subscribe: function(req, res) {
// Get groupId of user by your method
.....
.....
var roomName = 'group_' + groupId;
sails.sockets.join(req.socket, roomName);
res.json({
room: roomName
});
}
}
您可以在某处创建通知:
var roomNameForGroup = 'group_' + groupId;
sails.sockets.blast(roomNameForGroup, {id:4,groupid:6,postid:2,objectid:1});
在您看来:
io.socket.on('connect', function(){
io.socket.get('/notifications/subscribe', function(data, jwr){
if (jwr.statusCode == 200){
io.socket.on(data.room,function(obj){
console.log(obj);
});
} else {
console.log(jwr);
}
});
});
我现在无法测试代码,但它看起来可行。