2017-01-09 3 views
0

Я использую 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(); 
    } 
} 

ответ

1

Try This

clients.SingleOrDefault(r => ((SocketHandler)r).userName == "udara").Send("Hello udara"); 
+0

Не могли бы вы объяснить свое решение) – Rocketq

+1

Вы можете хранить коннектин идентификатор в базе данных, и вы можете получить конкретный идентификатор пользователя из базы данных? , После отправки сообщения выбранному пользователю. –

 Смежные вопросы

  • Нет связанных вопросов^_^