В моем приложении ASP.NET MVC пользователь нажимает кнопку в пользовательском интерфейсе для совершения телефонного звонка. Запрос ajax отправляется в приложение MVC, которое вызывает телефонный дозвон - метод в библиотеке, который вызывает внешний компонент для совершения вызова.ASP.NET MVC - распространить событие на стороне сервера на клиента
Если набранный вызов завершен получателем вызова, компонент набора номера телефона вызывает событие, вызывая обработчик событий в своем классе.
Я хочу распространять это событие на стороне клиента, чтобы он мог обновлять свой интерфейс.
одним из вариантов я не могу использовать
Я посмотрел на JavaScript сервера посланных событиях. Тем не менее, они отличаются от моей ситуации тем, что в событии, отправленном сервером JavaScript, вот что происходит:
1) Клиент инициирует соединение с новым сокетом на сервере. Ключевое различие заключается в том, что клиент инициирует соединение.
2) Соединение проводится в реальном времени и активно, пока сервер или клиент не захотят его прекратить.
3) Сервер должен быть активным на протяжении всего времени с момента установления соединения до тех пор, пока клиент или сервер не захотят прекратить соединение и не будут обмениваться уведомлениями. Это означает, что для каждого клиента используется новое соединение сокетов и, следовательно, новый рабочий поток для обслуживания обмена уведомлениями.
Если я использую события, отправленные сервером, мне придется создать сервер, который останется в живых. Это означает, что мне придется иметь новое действие над контроллером и соответствующее представление, которое вызывается в самом начале и остается в живых до тех пор, пока не будет получено уведомление об отклонении вызова.
Это может быть не только дорогостоящим, но и контр-интуитивным для моего дизайна, поскольку я не хочу, чтобы меня переадресовывали на новый вид, чтобы прослушивать события.
У кого-нибудь есть альтернатива?
Знаете ли вы о 'WebSocket', верно? Чтобы интегрироваться с ASP.NET, вы можете использовать SignalR – Ian
Спасибо. Да. Я полагаю, что объект 'EventSource' JavaScript, который делает события, отправленные сервером, использует' WebSockets'. Я снова посмотрю на это. Благодарю. –
Вам не нужен отдельный просмотр; просто [метод контроллера, который ничего не возвращает и записывает непосредственно в объект «Response»] (http://stackoverflow.com/a/35678190/111794). –