我无法仅更新一个特定用户。
我正在开发一些 ASP.NET Core Web 应用程序,我想向我的项目实现推送通知。我将进一步解释我在应用程序中所做的事情。
我有一个页面,用户可以在其中发布内容(例如在 Facebook 上)。在该帖子上,每个人都可以喜欢/不喜欢它(喜欢按钮)或评论它(也可以删除评论)。我在该部分的 signalR 实现与 wait Clients.All.SendAsync("UpdateComments", userId, postId); 完美配合。
现在我想向发帖的用户发送通知。
我尝试以这种方式 await Clients.User(userId).SendAsync("SendNotification", notificationText);
但不起作用。当我调试它时,在这部分 User(someId)
上,它希望我发送 connectionId
,而我想要更新的用户却没有。我只有调用当前连接的用户的connectionId。
我的问题是:如何从表中使用 userId 更新用户,或者如何根据我的 userId 获取 connectionId? 或如果我无法以任何方式完成此操作,有没有一种方法可以在某些 signalR 组连接中自动添加用户(当他登录到应用程序时),而不需要用户激活连接他自己?
我用谷歌搜索了很多,但没有找到答案。 This是我在我的应用程序中实现 signalR 的链接。
最佳答案
我已经写了一篇小博文 here
您需要编写一个方法来发送给特定的用户 ID,如下所示
public async Task Send(string userId)
{
var message = $"Send message to you with user id {userId}";
await Clients.Client(userId).SendAsync("ReceiveMessage", message);
}
然后监听事件
(function () {
var connection = new signalR.HubConnectionBuilder().withUrl("/connectionHub").build();
connection.start().then(function () {
console.log("connected");
connection.invoke('getConnectionId')
.then(function (connectionId) {
sessionStorage.setItem('conectionId', connectionId);
// Send the connectionId to controller
}).catch(err => console.error(err.toString()));;
});
$("#sendmessage").click(function () {
var connectionId = sessionStorage.getItem('conectionId');
connection.invoke("Send", connectionId);
});
connection.on("ReceiveMessage", function (message) {
console.log(message);
});
})();
关于javascript - SignalR - 更新特定用户(推送通知),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59884163/