|
SignalR
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! Столкнулся со следующей проблемой. Есть MVC(web) приложение в котором используется SignalR для рассылки различных уведомлений пользователям. Подключение к хабу и функции рассылки описаны на мастер странице. Всё работает как и должно работать. Пользователь получает сообщения находясь на любой странице приложения. Но понадобилось на нескольких страницах добавить разные функции с использованием SignalR. Что я сделал: Собственно тоже самое, что и на мастер странице. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Так вышеперечисленное добро отказалось работать. Согласно документации по SignalR: "Прежде чем стартовать хаб, необходимо зарегистрировать обработчики событий" Normally you register event handlers before calling the start method to establish the connection. If you want to register some event handlers after establishing the connection, you can do that, but you must register at least one of your event handler(s) before calling the start method. One reason for this is that there can be many Hubs in an application, but you wouldn't want to trigger the OnConnected event on every Hub if you are only going to use to one of them. When the connection is established, the presence of a client method on a Hub's proxy is what tells SignalR to trigger the OnConnected event. If you don't register any event handlers before calling the start method, you will be able to invoke methods on the Hub, but the Hub's OnConnected method won't be called and no client methods will be invoked from the server. Так вот получается что на мастер странице, я регистрирую обработчики событий и стартую хаб. Всё ок. Рассылка уведомлений работает. Захожу на другую страницу где нужно использовать вышеописанный функционал и он не работает! Комментирую signalR на мастер странице, вышеописанный функционал работает как надо. Переношу вышеописанный функционал на мастер страницу, работает всё как надо!! Т.е. можно сделать вывод, чтобы все события используемые в проекте работали корректно, необходимо зарегистрировать их перед первым стартом хаба. Последующие старты хаба и события игнорируются. Выносить весь функционал на мастер страницу не реально. У кого какие будут соображения и/или опыт по данному вопросу?? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2018, 12:26 |
|
SignalR
|
|||
---|---|---|---|
#18+
RAVen42У кого какие будут соображения и/или опыт по данному вопросу?? Сделайте свой промежуточный диспетчер, который собирает регистрационные данные со страницы, потом регистрирует. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 09:02 |
|
SignalR
|
|||
---|---|---|---|
#18+
hVosttСделайте свой промежуточный диспетчер, который собирает регистрационные данные со страницы, потом регистрирует. Это вариант конечно. Но нашел решение проще SignalR: How to add client call after the hub is started? В документации про это не говорится, а стоило бы рассказать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 09:23 |
|
SignalR
|
|||
---|---|---|---|
#18+
RAVen42Это вариант конечно. Но нашел решение проще SignalR: How to add client call after the hub is started? По мне так себе решение. В любом случае, желательно писать свой диспетчер и скрывать сигналР за ним, по многим причинам. Да и без диспетчера, мастер пейдж может определить секцию для регистрации страницами своих хабов. В общем решений масса, а по вашему линку похоже на костыль. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 09:29 |
|
SignalR
|
|||
---|---|---|---|
#18+
hVostt В общем решений масса, а по вашему линку похоже на костыль. Согласен, что похоже на костыль, но это только на первый взгляд. На самом деле, с диспетчером или без, использование хаба с прокси или без имеет значение. В документации к сожалению не описано в чём разница. А разница есть и она очень существенная. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.05.2018, 10:32 |
|
|
start [/forum/topic.php?fid=18&msg=39651001&tid=1355207]: |
0ms |
get settings: |
12ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 280ms |
total: | 424ms |
0 / 0 |