我试图防止谁可以看到特定页面的事件,所以我正在确定并存储哪些用户有权访问特定页面的ID。在频道.js中,我可以通过遍历如下页面将用户添加到 app.on('connection'( 中的新页面级频道:app.channel('page-' + pageId(.join(connection(
问题是用户直到刷新浏览器并重新连接后才会开始从该页面接收广播。
我想发生的是让允许用户的所有连接在创建页面时开始获得广播。有没有办法在频道.js中做到这一点,或者我可以告诉它开始向谁广播页面创建的钩子?
编辑以添加我尝试的最后一件事。"用户页面"是链接用户和页面的关联实体。
app.service('users-pages').on('created', userPage => {
const { connections } = app.channel(app.channels).filter(connection =>
connection.user.id === userPage.userId
)
app.channel('page-' + userPage.pageId).join(connections)
})
保持频道更新的文档应该有你正在寻找的答案。它使用users
服务,但可以相应地更新页面,如下所示:
app.service('pages').on('created', page => {
// Assuming there is a reference of `users` on the page object
page.users.forEach(user => {
// Find all connections for this user
const { connections } = app.channel(app.channels).filter(connection =>
connection.user._id === user._id
);
app.channel('page-' + pageId).join(connections);
});
});
使用app.channel('page-' + pageId(.join(connections(对我不起作用。但是循环遍历每个连接工作正常:
connections.forEach(connection => {
app.channel('page-' + userPage.pageId).join(connection)
})