Я немного борюсь с этим. То, что я пытаюсь достичь, - отправить сообщение обратно на вызывающий Ajax (страница aspx) с сервера (код страницы aspx позади), чтобы обновить процесс выполнения много времени на сервере.SignalR: Отправка сообщения обратно только вызывающему абоненту AJAX из кода за страницей (за пределами Hub/PersistentConnection)
Я пытаюсь использовать следующий код из кода, стоящего за страницей aspx, но это не работает!
_context = GlobalHost.ConnectionManager.GetConnectionContext<MessengerEndpoint>();
_context.Connection.Send(((Connection)_context.Connection).Identity, "hey");
Любые предложения будут очень полезными.
Редактировать: Любые берущие? @ Dfowler/@ N.TaylorMullen?
С уважением.
.Broadcast посылает все соединения, кроме вызывающего абонента Его то же самый с контекстом вара = GlobalHost.ConnectionManager.GetHubContext();.! context.Clients. All.postMessage («эй»); wh Это очень расстраивает! Система должна просто транслироваться всем, когда она говорит «broadcast»/«All», и пусть разработчики справляются с исключениями! –
Rair
Вы правы, но вам нужно помнить, что код позади/Controller не является соединением. У вас есть connectionID от SignalR? –
Ну, похоже, мой вызов Ajax был вызван до того, как соединение было установлено. Следовательно, он вызывал всех других клиентов, чем тот, на котором я был. Btw, Im на IE8. Итак, теперь, когда он транслирует все, что дальше? Я пытался каким-то образом передать идентификатор узла с сервера (вне концентратора) обратно клиенту, чтобы я мог проверить, совпадает ли идентификатор узла, и только затем запрашивать уведомление. Но я не смог найти способ доступа к идентификатору узла. IHubContext не раскрывает это значение в отличие от Hub.Context, который делает (ConnectionId)! Я не уверен, почему эти два наследуют от двух разных интерфейсов! – Rair