帆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})
我想要的:-
我希望客户端只订阅来自特定groupid的groupfeeds。例如:用户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);
}
});
});
我现在不能测试代码,但它看起来是可行的。
相关文章:
- 在MVVM视图模型中处理应用程序范围的元素
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 连接angularjs中的两个范围模型
- mocking和测试指令,隔离范围包含ng模型
- NG模型对我来说是矫枉过正的.任何仅在单击按钮时更新范围的替代方案,而不是每次都更新范围
- 视图模型中的功能范围
- 范围不更新模型中的更改
- Angularjs 绑定 2 指令将模型范围限定为父控制器模型
- 杜兰达尔视图模型中的范围界定
- 重复离子范围输入的去冲突ng模型
- 主干.js - 模型方法中“this”的范围
- 在范围之外调用 AJAX 成功的淘汰模型函数
- 角度模型放宽了指令中包含ng的范围
- 主干模型/集合中的Javascript范围界定问题
- Angular指令无法确定ng模型的范围
- Angular-使用范围变量设置ng模型
- 模型窗口内的AngularJS范围
- 灰烬把手不会自动将模型放入范围
- Angular数据绑定没有更新正确的模型范围
- AngularJS:如何根据指令设置ng模型或更改范围值