javascript - todas - Las velas js se suscriben a los cambios del modelo delimitados por el atributo groupid
todas las etiquetas de html y sus atributos pdf (1)
Tengo un modelo llamado Groupfeed que se parece a esto
module.exports = {
schema:true,
attributes:
{
groupid:
{
model:''groups'',
required:true
},
postid:
{
model:''post'',
required:true
},
objectid:
{
model:''objects'',
required:true
},
}
};
En el lado del cliente, puedo suscribirme al modelo de Groupfeed usando
io.socket.get(''/groupfeed'')
que se realiza automáticamente por la api del plan y luego
io.socket.on(''groupfeed'',function(obj){console.log(obj)})
me daría actualizaciones sobre los cambios del modelo cuando publico en el backend usando
Groupfeed.publishCreate({id:4,groupid:6,postid:2,objectid:1})
Lo que quiero :-
Quiero que un cliente se suscriba solo a las fuentes de grupo de un groupid en particular. Por ejemplo: el usuario X puede suscribirse a las fuentes de grupo de groupid 1 (Nota: Un modelo de grupo almacena la membresía de usuario para un grupo)
O algo así como esta llamada imaginaria:
io.socket.get(''/groupfeed?groupid=5'')
De modo que cuando llamo a publishCreate con un groupid: 5, solo las personas suscritas a groupid 5''s groupfeed podrían obtener una actualización
Es mejor que crees habitaciones diferentes para grupos.
¡CÓDIGO SIN PRUEBA! Crear un controlador: 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
});
}
}
En algún lugar puedes crear una notificación:
var roomNameForGroup = ''group_'' + groupId;
sails.sockets.blast(roomNameForGroup, {id:4,groupid:6,postid:2,objectid:1});
Y en su opinión:
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);
}
});
});
No puedo probar el código en este momento, pero parece viable.