Можно ли вызывать IConnectionManager из SignalR внутри моих контроллеров mvc3? - PullRequest
1 голос
/ 26 марта 2012

Я нахожусь на проекте MVC3 и использую привязку структуры карты для своего внедрения зависимости.Все было на месте, кроме тех случаев, когда я начал использовать SignalR, где я не могу реализовать свой DI, как на контроллерах.Я уже несколько дней гуглю по поводу реализации DI структурной карты в SignalR, но не нашел надежного примера, как это сделать.Похоже, что все, кто использует SignalR, используют Ninject.

Моя цель состоит в том, чтобы иметь условные операторы (которые требуют от меня внедрения служб) внутри моего хаба перед вызовом моих клиентских методов, но я не добился успеха в этом.

Я не хотел, чтобы эта штука задерживала мою разработку, поэтому я искал альтернативные способы, а затем обнаружил, что на самом деле могу вызывать методы моего клиента из моих контроллеров, используя следующие коды:

 IConnectionManager connectionManager = AspNetHost.DependencyResolver.Resolve<IConnectionManager>();
 dynamic clients = connectionManager.GetClients<MyHub>();
 clients.myClientScript();

Это работает для меня, но я не уверен, что это хороший подход, особенно если я использую внедрение зависимостей.

Итак, мой вопрос: нормально ли продолжать вызывать это внутри моего контроллера?У вас есть лучший подход?

Спасибо

1 Ответ

1 голос
/ 26 марта 2012

Нет причин, по которым вы не можете отправлять информацию подключенным клиентам с вашего контроллера с помощью SignalR, однако текущий клиент не увидит эту информацию (из-за отсутствия подключения во время публикации).

При этом получение Structuremapв SignalR на самом деле довольно легко.Вы можете увидеть, как именно это сделать, в моем ответе здесь: https://stackoverflow.com/a/9866374/701062.

...