我尝试使用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
)
2条答案
按热度按时间7cjasjjr1#
如果你想在SignalR中发送消息给特定的用户,最简单的方法是使用表单验证。2你也可以使用自定义的会话和表单验证。3在创建会话代码后,立即放入以下代码。4 FormsAuthentication.SetAuthCookie(username.Trim(),false);然后,在signalR中,您可以使用此行向该用户发送消息:
bihw5rsg2#
您应该使用
它应该工作得很好。