Вопрос

Может ли кто -нибудь сообщить мне, как работает Signalr на высоком уровне?

Я предполагаю, что это промывает данные, используя Response.Flush и на стороне клиента он отправляет запросы AJAX через определенные интервалы. Это правильно?

Это было полезно?

Решение

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

Signalr имеет несколько встроенных транспортов:

  1. Вебсокеты
  2. Сервер отправил события
  3. Навсегда кадр
  4. Длинный опрос

SignalR пытается выбрать «лучшее» соединение, поддерживаемое сервером и клиентом (вы также можете заставить его использовать конкретный транспорт).

Это высокий уровень. Если вы хотите увидеть, как реализован каждый транспорт, вы можете посмотреть на исходный код.

Есть также клиент -код для каждого транспорта:https://github.com/signalr/signalr/tree/master/src/microsoft.aspnet.signalr.client.js

Если вы спрашиваете о том, как работает длинный перевозчик, в частности:

Он отправляет запрос AJAX на сервер, который асинхронно ждет сигнала. Когда есть сигнал или время запроса, он возвращается с сервера и отправляет другой запрос, и процесс продолжается. (Я оставил некоторые подробности о том, как клиент он отслеживает то, что он видел, чтобы он не пропускал сообщения)

Надеюсь, это отвечает на большую часть вашего вопроса.

Другие советы

@davidfowl уже ответил на основную часть. Однако предоставить более подробную информацию о разнице в поведении транспорта, особенно между WebSocket и другими транспортами; Ниже приведены некоторые моменты.

  • WebSocket-единственный транспорт, который устанавливает истинное постоянное двустороннее соединение между клиентом и сервером. Тем не менее, WebSocket поддерживается только IIS 8 или выше, а также последними версиями Internet Explorer, Google Chrome и Mozilla Firefox.
  • В то время как сервер отправлял события, навсегда кадр и длительный опрос, все трое следуют односторонним общению и поддерживаются большинством браузеров.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top