kotlin 如何使用SignalR向特定用户发送消息

soat7uwm  于 2022-12-13  发布在  Kotlin
关注(0)|答案(2)|浏览(418)

我尝试使用SignalR发送一条消息,如果我发送给每个人,但不发送给特定的用户,它就可以工作。我尝试使用理论上应该是唯一的ConnectionId,但每次我尝试使用客户端收到的同一个ConnectionId时,它都不工作。
服务器端:

public async Task SendMessage(string user, string message)
{
   var a = Context.UserIdentifier;
   await Clients.User(Context.ConnectionId).SendAsync("ReceiveMessage", user, message);
   await Clients.All.SendAsync("ReceiveMessage", user, message);
}

尝试在上下文中传递相同的ConnectionId不会发送消息,只有当我调用Clients.All
客户端是一个android应用程序,我不确定是否应该在我的客户端上注册一些东西。

hubConnection = HubConnectionBuilder.create("http://192.168.1.5:3000/notification").build()
    hubConnection.start()

    hubConnection.on<String, String>(
        "ReceiveMessage",
        Action2 { user: String?, message: String? ->
            requireActivity().runOnUiThread(java.lang.Runnable {
                Toast.makeText(
                    context,
                    "I'm here.",
                    Toast.LENGTH_LONG
                ).show()
            })

        },
        String::class.java,
        String::class.java
    )
7cjasjjr

7cjasjjr1#

如果你想在SignalR中发送消息给特定的用户,最简单的方法是使用表单验证。2你也可以使用自定义的会话和表单验证。3在创建会话代码后,立即放入以下代码。4 FormsAuthentication.SetAuthCookie(username.Trim(),false);然后,在signalR中,您可以使用此行向该用户发送消息:

bihw5rsg

bihw5rsg2#

您应该使用

await Clients.Client(Context.ConnectionId).SendAsync("ReceiveMessage", message);

它应该工作得很好。

相关问题