gpt4 book ai didi

javascript - 仅为模型所有者广播消息

转载 作者:行者123 更新时间:2023-11-29 21:46:02 25 4
gpt4 key购买 nike

我正在构建一个应用程序,用户可以在其中创建事件,其他用户可以“加入”并向事件添加评论,他们也可以打开他们之间的聊天,我有一个名为“Notification”的模型,我想在其中存储所有系统中的通知,我想在用户对他的事件发表评论、给他写新消息等时向事件的所有者发出警告。

这是我写的评论部分代码:

通知模型:

/* Notification.js */
module.exports = {

attributes: {
title: {
type: 'string',
required: true
},
text: {
type: 'string'
},
type:{
type: 'string',
enum: ['new_assistant', 'cancel_assistant', 'new_message', 'new_comment'],
required: 'true'
},
read: {
type: 'boolean',
defaultsTo: false
},
user: {
model: 'user'
}
}
};

这是我将套接字订阅到他的通知模型的地方:

Notification.find({
user: owner_id
}).then(function(notifications) {
return Notification.watch(req.socket);
});

每当用户在事件中发表评论时,我都会创建一个新的通知记录:

Notification.create({
title: 'A new user has comment',
text: "Hola",
type: 'new_comment',
read: false,
user: event.owner
}).then(function(comment) {
return Notification.publishCreate({
id: notification.id,
title: 'A new user has comment'
});
});

该代码已运行,但它向所有用户发送了一个套接字消息,我只想警告事件的所有者(以及将来要参加此事件的用户)。

非常感谢。

最佳答案

watch 将模型实例创建消息发送到所有正在监视模型的套接字,可以在没有找到通知的情况下执行相同的注册,因为它不依赖于实例,即只需调用:Notification.watch(req .套接字);

要将通知发送给单个订阅者,请使用 sails.sockets

当你想订阅时为所有者创建一个房间:

sails.sockets.join(req.socket, owner_id);

当你想向这个房间发布广播时:

Notification.create({
title: 'A new user has comment',
text: "Hola",
type: 'new_comment',
read: false,
user: event.owner
}).then(function(comment) {
sails.sockets.broadcast(event.owner, {
id: notification.id,
title: 'A new user has comment'
});
});

关于javascript - 仅为模型所有者广播消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31154144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com