У меня есть клиентское приложение (настольное приложение C#), которое подключено к серверному приложению (приложение asp.net mvc) с помощью signalR, теперь я хочу, чтобы заказчик покупал один из моих продуктов с сайта, а продажа сообщалась в клиентское приложение. Но по соображениям безопасности я считаю, что это хороший способ ограничить вызов «мой репортерный метод signalR» только с серверной стороны! Но я не знаю, как я могу это сделать?Можно ли настроить метод signalR только для вызова с сервера?
ответ
То, что вы хотите сделать, это сигнал пользователей, что продукт был обновлен
Сначала получить контекст,
var context = GlobalHost.ConnectionManager.GetHubContext<ProductHub>()
Затем вы можете обновить клиент по-разному, все клиенты
context.Clients.All.updateProduct(product);
Конкретный клиент (идентификатор подключения)
context.Clients.Client(id).updateProduct(product)
Идентификатор пользователя
context.Clients.User(userId).updateProduct(product)
Убедитесь в абстрактном контексте концентратор с вашего домена логики, ее плохая практика, чтобы иметь высокое сцепление между ними.
Вы также можете использовать библиотеку, которая ее абстрагирует, я создал такую библиотеку, и я думаю, что она подойдет вам в идеальном состоянии, вы используете любой тип агрегатора событий или автобуса сообщений, после чего вы вызываете свой автобус метод домена, такой как
eventAggregator.Publish(new ProductUpdated(product));
Моя библиотека будет загружать и доставлять обновления клиентам. Посмотрите здесь
http://andersmalmgren.com/2014/05/27/client-server-event-aggregation-with-signalr/
Вопрос был, если можно ограничить, что методы могут быть вызваны только с сервера. Это не отвечает на это. – John
Методы хаба предназначены для вызова через клиентов signalr. Нет смысла иметь метод хаба, который не может быть вызван от клиента. Но вам не нужно быть в контексте метода хаба, просто позвоните, GlobalHost.ConnectionManager.GetHubContext
Дорогой @Anders, я думаю, вы имеете в виду, что я использую контекст signalR как статический объект и вызываю методы с контекстом. Мне не нравится использовать методы signalR для любых функций моего веб-приложения. Я думаю, что очень хорошо вызывать методы отчета signalR в делегатах (методы событий). – isaeid
- 1. Только для сервера SignalR
- 2. Метод вызова SignalR
- 3. angularjs signalr - Устраните метод сервера
- 4. Самостоятельный метод вызова SignalR не вызван
- 5. Можно ли передать функцию с помощью SignalR?
- 6. вызова метод клиента вне SignalR проекта
- 7. Signalr: «default» сделано для вызова hub.server.method
- 8. Использовать веб-порты signalR для прослушивания сервера non signalR?
- 9. SignalR: Есть ли встроенная функция предотвращения частого вызова функций сервера?
- 10. вызова только родительский метод
- 11. SignalR: Как по-настоящему вызвать метод хаба с сервера/C#
- 12. Метод вызова SignalR в Swift (SwiftR)
- 13. Как настроить NHibernate с SignalR
- 14. Метод вызова метода SignalR не получен
- 15. Можно ли установить Signalr с VS2010
- 16. SignalR не разрешают JsonSerializer для входящего вызова сервера
- 17. метод сервера SignalR не найден на IIS
- 18. window.location не работает с функцией вызова сервера с signalR
- 19. Пример JQuery для вызова функции SignalR Async
- 20. Использовать специальный метод для вызова сервера сокетов
- 21. SignalR - Определить метод транспорта для подключения на стороне сервера
- 22. Можно ли синхронно вызывать метод стороны Signalr на стороне сервера javascript?
- 23. Можно ли проверить метод вызова метода объекта с помощью Mockito?
- 24. Метод вызова класса в концентраторе с использованием SignalR
- 25. метод вызова при запуске сервера
- 26. Можно ли подделывать идентификаторы соединения SignalR?
- 27. Можно ли настроить чертежи Ember
- 28. Можно ли настроить web.py на страницу 404 сервера?
- 29. Можно ли выполнить метод только один раз?
- 30. Можно ли настроить функцию обратного вызова чтения в cURL?
Где еще вы ожидаете, что это можно назвать с? Это не похоже на соединение с сервером, где он постоянно прослушивает входящие соединения. Клиент должен инициировать соединение с сервером. – mason
вам нужно будет показать код, как вы звоните в концентратор, не будучи подключенным к клиенту. – DLeh
@DLeh Я думаю, что это не важно, как я вызываю методы signalR из клиентского приложения. Когда продукт продается с моим сайтом, мне нужно сказать signalR проданный продукт, и signalR должен заявить администрации клиента, что продукт продается (в режиме реального времени). Если метод отчетности, вызванный с сайта, означает, что любой орган может его увидеть. – isaeid