0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 54
1

Отправка сообщений клиенту

14.08.2015, 01:18. Показов 4603. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток, форумчане! Обычные прохожие и гуру wcf, подскажите пожалуйста нубу.

Обычная банальщина - wcf-чат. Суть вопроса заключается в том, что не могу понять, как обратиться к подключённым клинтам в классе службы.
Привязка : netTcpBinding
Клиенты работают с одним экземпляром класса службы. SessionMode.Required.
Предыстория: есть класс службы. В нём метод :
C#
1
2
3
4
public send (string author, string message)
{
//неясный для меня код..
}
Также в классе имеется массив с никнеймами пользователей чата и их ID сессии.
В методе send мне нужно отправить всем подключённым клиентам (в массиве users), сообщение Messsge и, естественно, его автора Author. Так вот, скажите ПоЖаЛуЙсТа, как это сделать? Написать в коде? Синтаксис и всё такое. Как обратиться к этим клинтам подключённым? Как им что-то отослать и т.п.?

P.s. заранее большое спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.08.2015, 01:18
Ответы с готовыми решениями:

WCF отправка сообщений
Хочу сделать отправку сообщений пользователям через WCF сервис.Смотрел примеры на Сокетах и там...

Кривая отправка сообщений клиента серверу
Здравствуйте. Пишу программу, которая в системном журале отбирает все ошибки и отправляет их на...

Отправка сообщений, файлов и т.д
Всем привет! Недавно решил поработать с сетью и сразу встал вопрос: нашёл на этом форуме код:...

Отправка мгновенных текстовых сообщений
доброе время суток. хочу попробовать написать прогу для обмена текстовыми сообщениями. кто-то...

5
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
14.08.2015, 04:47 2
Лучший ответ Сообщение было отмечено dimoncraft как решение

Решение

Цитата Сообщение от dimoncraft Посмотреть сообщение
Доброго времени суток, форумчане!
И вам не хворать.
Цитата Сообщение от dimoncraft Посмотреть сообщение
Суть вопроса заключается в том, что не могу понять, как обратиться к подключённым клинтам в классе службы.
Суть вопроса вполне ясна. И так, по шагам, мое видение реализации.
1. Служба должна быть синглетная (свойство InstanceContextMode у атрибута ServiceBehavior - Single).
2. Должно присутствовать к-либо глобальное хранилище данных (в вашем случае - подключенных клиентов).
3. В реализации службы должны быть заданы методы Connect() и Disconnect(), для явного определения подключения - отключения. Для гарантии порядка их вызова следует воспользоваться демаркационными операциями (для атрибута OperationContract установить свойства IsInitiating и IsTerminatig), тем самым гарантируя, что метод Connect() всегда будет вызван первым (для создания канала сервер-клиент и занесения записи в хранилище о подключении пользователя), а метод Disconnect() всегда будет вызван последним (для удаления записи о пользователе из хранилища).

Добавлено через 1 час 21 минуту
dimoncraft, а если хорошо погуглить, то и решение уже есть (очень похожее на мое )
http://www.codeproject.com/Tip... lusinplusC
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
14.08.2015, 05:03 3
Вот, можете или использовать то что по ссылке, или то что у меня получилось Почти закончил писать, и решил погуглить, и как оказалось, решение уже есть.
Ну ничего, зато потренировался.
Только не забудьте в файлах клиентов менять имена.
Вложения
Тип файла: rar WCFChat.Client.rar (40.7 Кб, 149 просмотров)
Тип файла: rar WCFChat.Server.rar (26.9 Кб, 154 просмотров)
5
61 / 61 / 32
Регистрация: 30.07.2013
Сообщений: 178
11.09.2015, 10:05 4
insite2012, спасибо вам за примеры.

Если клиент, подключившись к серверу, аварийно завершается, то он остается в списках клиентов на сервере. Я хочу на сервере по таймеру вызывать метод и проверять список клиентов на то, что они подключены к серверу.

Можете еще подсказать реализацию проверки подключённых клиентов со стороны сервера?
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
11.09.2015, 13:43 5
Цитата Сообщение от Adadjio Посмотреть сообщение
на сервере по таймеру вызывать метод
А зачем? Не проще ли в самом сервере определить метод, который будет вызываться при любом возникшем исключении на клиенте (клиентом, разумеется). А уже сервер при вызове этого метода получит из него контекст выполнения, и удалит из списка объектов обратного вызова тот, что относится именно к этому контексту.
0
61 / 61 / 32
Регистрация: 30.07.2013
Сообщений: 178
11.09.2015, 13:57 6
insite2012, данный метод у меня и так создан, но если на компьютере клиента вдруг сгорит что-то или свет выключится и т.д., кто тогда вызовет метод ? Поэтому я и хотел бы узнать способ проверять доступность клиентов со стороны сервера.

На данный момент у меня в Callback-e создан метод возвращающий bool. На клиенте данный метод просто возвращает true. Сервер по таймеру перебирает клиентов и вызывает данный метод. С помощью блока try - catch я отлавливаю ошибки и удаляю клиентов который их вызывают. Проблема в том, что на каждую такую ошибку почему-то уходит не меньше минуты ожидания=(((
0
11.09.2015, 13:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.09.2015, 13:57
Помогаю со студенческими работами здесь

Отправка сообщений другим окнам
Здравствуйте! Проблема, которая у меня возникла, уже, в той или иной форме, многократно поднималась...

Отправка сообщений через SMTP
В программа работает но сообщения на мыло не приходят. В чем ошибка? Как ее исправить? using...

Отправка и получение сообщений через сокеты
Для начала , вот статья с аналоговым примером. Вот метод для получения сообщений : void...

WinAPI: отправка и прием сообщений окнам
1. Отсылаю окну программы сообщение WM_QUIT, программа не завершается. static...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru