Нет, SignalR - это абстракция над соединением. Это дает вам две модели программирования через это соединение (концентраторы и постоянные соединения). SignalR имеет концепцию транспортов, каждый транспорт решает, как данные отправляются / принимаются и как он подключается и отключается.
SignalR имеет несколько встроенных транспортов:
- WebSockets
- Сервер отправил события
- Навсегда кадр
- Длинный опрос
SignalR пытается выбрать «лучшее» соединение, поддерживаемое сервером и клиентом (вы также можете заставить его использовать определенный транспорт).
Это высокий уровень. Если вы хотите увидеть, как реализован каждый транспорт, вы можете посмотреть исходный код .
Также есть код клиента для каждого транспорта:
https://github.com/SignalR/SignalR/tree/master/src/Microsoft.AspNet.SignalR.Client.JS
Если вы спрашиваете о том, как, в частности, работает транспорт для длинных опросов:
Он отправляет запрос ajax на сервер, который асинхронно ожидает сигнала для ответа. Когда появляется сигнал или запрос истекает, он возвращается с сервера и отправляет другой запрос, и процесс продолжается. (Я оставил некоторые детали о том, как клиент отслеживает увиденное, чтобы не пропустить сообщения)
Надеюсь, это ответит на большинство ваших вопросов.