我創建了一個SignalR項目。想要像基本的WhatsApp應用程序。我可以使用SignalR向所有客戶端發送消息,但我無法將消息發送給特定用戶。SignalR發送消息給特定用戶
這是我試過的。
服務器端
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
public class ChatHub : Hub
{
public static string UserName = "";
public void Send(string User, string Message)
{
//It doesn't works
Clients.User(UserName).sendMessage(Message);
//It works
Clients.All.sendMessage(Message);
}
public override Task OnConnected()
{
//It works I get the UserName
UserName = Context.QueryString["UserName"];
return base.OnConnected();
}
}
客戶端
protected override async void OnAppearing()
{
chatHubConnection = new HubConnection("http://192.168.2.2:80/", new Dictionary<string, string>{
{ "UserName", myUser }
});
chatHubProxy = chatHubConnection.CreateHubProxy("ChatHub");
chatHubProxy.On<string>("sendMessage", (k) => {
Messages.Add(string.Format("Msg:{0}", k));
});
await chatHubConnection.Start();
}
private async void SendButton_Clicked(object sender, EventArgs e)
{
await chatHubProxy.Invoke<string>("Send", recieverEntry.Text, messageEntry.Text);
}
這裏,您一看? http://stackoverflow.com/questions/19522103/signalr-sending-a-message-to-a-specific-user-using-iuseridprovider-new-2-0 – Ric
但你的'用戶名'是靜態的,所以它會(假設它可以工作)保存最後一個連接用戶的名字,我不認爲這是你的期望。 – Evk
@Evk是的,我知道它,我創建它來測試代碼。 – Guest