javascript - SignalR - 更新特定用户(推送通知)

标签 javascript node.js asp.net-core signalr asp.net-core-signalr

我无法仅更新一个特定用户。

我正在开发一些 ASP.NET Core Web 应用程序,我想向我的项目实现推送通知。我将进一步解释我在应用程序中所做的事情。

我有一个页面,用户可以在其中发布内容(例如在 Facebook 上)。在该帖子上,每个人都可以喜欢/不喜欢它(喜欢按钮)或评论它(也可以删除评论)。我在该部分的 signalR 实现与 wa​​it 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/

相关文章:

node.js - NodeJS 中断言的用途

javascript - IntelliJ IDEA - nodejs 插件 - passport.initialize() 未解析

c# - 文件存在时找不到 VirtualFileResult 文件

c# - 在一列中显示类别名称的表格,在第二列中显示属于类别的项目列表,并在 ASP.NET MVC View 中的详细信息 View 上显示链接

javascript - 滚动到下一个 div jQuery

javascript - 图像可拖动到特定的 x,y 坐标

javascript - 是否有关于将自定义操作绑定(bind)到什么的最佳实践?

node.js - 同一服务器上且具有相同 cookie 加密 key 的两个 NodeJs 应用程序可以共享 cookie 吗?

c# - 响应序列化问题

javascript - 在 ReactJs 中循环数组