вызвать функцию jquery с сервера - PullRequest
1 голос
/ 21 апреля 2011

In asp.net , Как я могу вызвать событие jquery на стороне клиента с сервера.Я хочу реализовать это в своем разделе чата ... текущий чат, кажется, работает нормально ... но у него есть одна проблема ... я должен отправлять запрос каждые 5 секунд из браузера клиента в его историю чата ...Я чувствую, что это не очень хорошая идея ...

Может кто-нибудь предложить какое-либо решение для моей проблемы

Ответы [ 4 ]

1 голос
/ 21 апреля 2011

По умолчанию вам нужно сделать это с помощью опроса из браузера клиентов.Вот как Ajax работает из коробки.Существует методика под названием Comet , которая является моделью push.

Вы можете попробовать использовать плагин jQuery, например: http://plugins.jquery.com/project/jQuery-Comet-Push-API.

В ближайшем будущем выможет использовать websockets в HTML5.Вот информация, взятая из http://channel9.msdn.com/Events/MIX/MIX11/HTM10.

WebSockets, новой спецификации, стандартизированной W3C и IETF, позволит веб-браузерам, а также клиентским приложениям открывать двунаправленный дуплексный канал связиудаленный хост.

Обязательно посмотрите видео MIX11!

0 голосов
/ 21 апреля 2011

Добро пожаловать в мир HTTP.

Вот как работают браузеры. Клиент отправляет запрос на сервер, а сервер отвечает. Нет другого пути (пока) идти другим путем. Это просто, и это одна из причин популярности протокола HTTP.

Но сейчас все меняется, и HTML5 поддерживает веб-сокеты. Если вы разрабатываете для устройства, поддерживающего HTML5 (последние версии всех браузеров + гнезда для поддержки iPhone / iPad), то веб-сокеты - это путь.

С другой стороны, вы можете пойти с опросом кометы (как упомянуто XIII). В основном это клиент отправляет запрос на сервер и ждет, пока сервер не будет ничего ответить. Я не слишком уверен, что является хорошим способом реализации этого в ASP.NET (так как я думаю, что существует ограничение одновременных подключений), но это довольно полезный метод в Nodejs.

0 голосов
/ 21 апреля 2011

Хотя я не настолько опытен в ASP.Net, эту проблему можно решить другим способом.

Может ли сервер вернуть имя функции, которую нужно выполнить, а затем вызвать ее в функции обратного вызова?

Вроде как (Это просто опечатка, но)

$.post("yourpage.aspx",
   {
      d1: "v1"
   },
   function(data) {
     //now the data will hold the name of the function
     window[data](); 
   }
);

Теперь вы можете обернуть вышеуказанный код в другую функцию и настроить таймер, чтобы регулярно проверять ответ и выполнять функцию, если выполняется условие.

PS Я пропустил часть, где сценарии проверяют, соответствует ли условие.

0 голосов
/ 21 апреля 2011

Вы делаете лучшее, что можете, не вдаваясь в нечто вроде HTML5 WebSockets, которые еще не готовы к регулярному использованию.

Два варианта:

  • (консервативный вариант) Примите тот факт, что вы будете опрашивать сервер, и оптимизируйте способ опроса, чтобы сохранить воздействие низким.
  • (острый вариант) Попробуйте некоторые из новых библиотек, которые эмулируют Websockets.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...