Я использую Microsoft.WebSockets и сталкиваются с проблемами при отправке сообщений клиенту. В настоящее время я использовал объект WebSocketCollection и добавил на него каждый новый клиент. Он позволяет передавать сообщения всем клиентам. Но я хочу, чтобы отправить сообщение конкретному одной одной т.е. Signalr обеспечивает отправку сообщений от сервера к конкретному клиенту, т.е.Как отправить сообщение клиенту в Asp.net (C#) с помощью WebSockets
Hub.Clients.Client(connectionId).yourClientSideMethod()
Я хочу, чтобы достичь того же с помощью Microsoft.WebSockets. Я много искал об этом в Интернете, но не смог найти решение. Пожалуйста, помогите мне в этом.
Мой код выглядит следующим образом:
class ChatWebSocketHandler : WebSocketHandler
{
private static WebSocketCollection _chatClients = new WebSocketCollection();
private string _username;
public ChatWebSocketHandler(string username)
{
_username = username;
}
public override void OnOpen()
{
_chatClients.Add(this);
}
public override void OnMessage(string message)
{
//for broadcasting messages to all clients
//_chatClients.Broadcast(this._username + " : " + message);
//for sending message to individual client i want something like
_chatClients.Single(x=>x._username.Equals("name")).Send(message);
}
public override void OnClose()
{
// Free resources, close connections, etc.
base.OnClose();
}
}
Не могли бы вы объяснить свое решение) – Rocketq
Вы можете хранить коннектин идентификатор в базе данных, и вы можете получить конкретный идентификатор пользователя из базы данных? , После отправки сообщения выбранному пользователю. –