2013-10-07 2 views
0

Я немного борюсь с этим. То, что я пытаюсь достичь, - отправить сообщение обратно на вызывающий Ajax (страница aspx) с сервера (код страницы aspx позади), чтобы обновить процесс выполнения много времени на сервере.SignalR: Отправка сообщения обратно только вызывающему абоненту AJAX из кода за страницей (за пределами Hub/PersistentConnection)

Я пытаюсь использовать следующий код из кода, стоящего за страницей aspx, но это не работает!

_context = GlobalHost.ConnectionManager.GetConnectionContext<MessengerEndpoint>(); 
_context.Connection.Send(((Connection)_context.Connection).Identity, "hey"); 

Любые предложения будут очень полезными.

Редактировать: Любые берущие? @ Dfowler/@ N.TaylorMullen?

С уважением.

ответ

0

Прежде всего, вы можете попробовать (только попробовать):

Context.Connection.Broadcast ("hey"); 

, если он будет работать (и я думаю, что он будет работать (проблема является Identity, так что вы nedd, чтобы открыть соединение и сохранить идентификатор соединения на сервере или в клиенте для последующего использования

+0

.Broadcast посылает все соединения, кроме вызывающего абонента Его то же самый с контекстом вара = GlobalHost.ConnectionManager.GetHubContext ();.! context.Clients. All.postMessage («эй»); wh Это очень расстраивает! Система должна просто транслироваться всем, когда она говорит «broadcast»/«All», и пусть разработчики справляются с исключениями! – Rair

+0

Вы правы, но вам нужно помнить, что код позади/Controller не является соединением. У вас есть connectionID от SignalR? –

+0

Ну, похоже, мой вызов Ajax был вызван до того, как соединение было установлено. Следовательно, он вызывал всех других клиентов, чем тот, на котором я был. Btw, Im на IE8. Итак, теперь, когда он транслирует все, что дальше? Я пытался каким-то образом передать идентификатор узла с сервера (вне концентратора) обратно клиенту, чтобы я мог проверить, совпадает ли идентификатор узла, и только затем запрашивать уведомление. Но я не смог найти способ доступа к идентификатору узла. IHubContext не раскрывает это значение в отличие от Hub.Context, который делает (ConnectionId)! Я не уверен, почему эти два наследуют от двух разных интерфейсов! – Rair

Смежные вопросы