Я строю простой сервис wcf duplex. В этой службе клиенты отправляют сообщения на сервер, и сервер распространяет это сообщение всем подключенным клиентам. Однако, несмотря на то, что я определил атрибут ServiceBehavior как [ServiceBehavior (InstanceContextMode = InstanceContextMode.Single)], только клиент, который отправил сообщение, получает его обратно с сервера, а другие клиенты этого не делают. Я проверил, что есть только один экземпляр сервера. Что я сделал не так? Я просмотрел другие подобные вопросы в Интернете, и все они говорят, что я должен определить InstanceContextMode = InstanceContextMode.Single, что я уже сделал.Как использовать двустороннюю службу wcf для распространения сообщений всем клиентам?
ответ
У вас есть договор обратного вызова. Так что сервер ответит клиенту. Ознакомьтесь с нижеприведенным руководством по выполнению договора обратного вызова Click here
Также проверьте приведенный ниже сервер уведомления о событиях проекта. Этот проект делает то же, что и вы.
Не стесняйтесь спрашивать меня, если вам нужно больше разъяснений
Вы должны поддерживать clistList, как показано на фрагменте кода.
List<IMessageServiceCallback> clientList = new List<IMessageServiceCallback>();
public void Register()
{
IMessageServiceCallback callback = OperationContext.Current.GetCallbackChannel<IMessageServiceCallback>();
clientList.add(callback);
}
Если вы хотите передать это сообщение. Вы можете выполнить итерацию по списку и вызвать функцию обратного вызова для отправки сообщения клиентам.
, конечно, я определил контракт. Здесь: [ServiceContract (CallbackContract = TypeOf (IMessageServiceCallback))] общедоступный интерфейс IMessageService { [OperationContract (IsOneWay = истина)] недействительными SendMessage (строка с); } общедоступный интерфейс IMessageServiceCallback { [OperationContract (IsOneWay = истина)] недействительными SendMessage (строка с); } – user207809
Поддерживаете ли вы экземпляр экземпляра всех клиентов в списке или массиве? Список
Большое спасибо. Я посмотрел ссылки, и мне удалось реализовать услугу, которую я хотел. Короче говоря, мне нужно иметь объект обратного вызова для каждого подключенного клиента. Затем я перебираю все эти объекты, чтобы отправлять сообщения всем подключенным клиентам. – user207809
- 1. Как использовать службу WCF
- 2. Мне нужен сервер для отправки сообщений всем клиентам (Python, сокеты)
- 3. Метеор - отправка сообщения всем клиентам
- 4. Сервер для отправки сообщений клиентам
- 5. WCF duplex callbacks, как отправить сообщение всем клиентам?
- 6. Как отправить данные всем клиентам?
- 7. Можно ли использовать двустороннюю службу WCF для вызова клиента, когда клиент отключен?
- 8. отправить всем клиентам java
- 9. Могу ли я использовать двустороннюю привязку WCF для сообщения ретрансляции?
- 10. WCF не получает сообщений - как вы можете отлаживать службу WCF?
- 11. ASP.NET - Comet Нажатие сообщений от сервера ко всем клиентам
- 12. Отправка сообщений определенным клиентам
- 13. Java EchoTCPServer - Отправить всем клиентам
- 14. Выдача сообщений нескольким клиентам
- 15. Как защитить службу WCF, которую будет использовать приложение для Android?
- 16. Отправить команду всем подключенным клиентам
- 17. Использовать службу WCF от JQuery
- 18. Использовать службу WCF с jQuery
- 19. Как развернуть приложение java derby для распространения другим клиентам
- 20. Как профилировать службу WCF?
- 21. Отправка push-уведомления всем клиентам?
- 22. Socket.IO только излучающий всем клиентам
- 23. Синхронизированные данные по всем клиентам
- 24. JAVA Отправить объект всем клиентам
- 25. Как использовать службу WCF в android?
- 26. Как использовать веб-службу WCF в VB6
- 27. Как использовать службу SOAP (WCF) в Plone?
- 28. Как использовать службу WCF REST в C#?
- 29. Как использовать службу WCF в Orchard
- 30. Как использовать недавно запущенную службу WCF ASAP
покажите нам, как вы отправляете сообщение обратно. Убедитесь, что вы отправляете его всем подключенным клиентам. Вы могли бы заставить их вызвать метод регистрации и сохранить список на сервере и зацикливать список. –
Очевидно, что SignalR предназначен только для таких случаев. Это будет слишком сложно для WCF. –
Вот как я отправляю сообщения: IMessageServiceCallback callback = OperationContext.Current.GetCallbackChannel(); callback.SendMessage (сообщение); Я также попытался иметь отдельный объект обратного вызова для каждого пользователя и перебрать все эти объекты, но он тоже не работает. –
user207809