Witam,
Piszę aplikację, klient-serwer, która będzie mogła składać się z jednego serwera i dowolnej ilości klientów. Dla uproszczenia załóżmy, że jest to komunikator. Zrobiłem komunikację między klientem, a serwerem, potrafię połączyć dowolną ilość klientów z serwerem i czegoś od tego serwera żądać. Mam jednak problem z porozumiewaniem się klient-klient. Załóżmy, że chcę przesłać wiadomość z klienta #1 do klienta #2. Wysyłam ją do serwera i tam czeka ona w kolejce na odczytanie. Problem jednak w tym, że teraz, żeby odczytać wiadomość przez klienta #2, wszyscy klienci muszą tę wiadomość pobrać i sprawdzić, czy wiadomość jest dla nich przeznaczona.
Czy jest jakiś sposób na to, żeby serwer sam "wysłał" wiadomość do odpowiedniego klienta? Jak w ogóle obsłużyć to, żeby serwer czegoś zażądał od podłączonego klienta?
Z góry dzięki za wszelką pomoc.
0
0
Nie jestem pewien, czy WCF do tego służy. Ja bym użył jakiegoś service busa.
0
Ja, kiedyś, jak pisałem komunikator to na service sprawdzał kto pobiera wiadomości i tylko te przekazywał, które były dla danego klienta
mniej więcej tak:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)]
public class MessageService : IMessageService
{
List<Message> _messages = new List<Message>();
public void AddMessage(Message message)
{
_messages.Add(message);
Trace.WriteLine(_messages.Count);
}
public List<Message> GetMessage(string To)
{
List<Message> myMessage = (from message in _messages
where message._toLogin == To
select message).ToList();
_messages.RemoveAll(x => x._toLogin == To);
Trace.WriteLine("Pobiera : " + To + "pobrał :" + myMessage.Count);
return myMessage;
}
}