Какво е SignalR

Механизъм за избор на протокол

Следват стъпките, които SignalR предприема при избора на транспортен протокол:

  1. Ако браузърът е Internet Explorer 8 или по-стар, тогава се използва Long Pooling.
  2. Ако JSONP е активиран (т.е. параметърът jsonp е зададен на true, когато връзката е установена), се използва Long Pooling.
  3. Ако възникне връзка между домейни (т.е. крайната точка на SignalR и уеб страницата са в различни домейни), тогава WebSocket ще се използва при следните условия:
  4. Клиентът поддържа CORS (Cross Origin Resource Sharing). Подробна информация за това кои клиенти поддържат CORS можете да намерите тук: CORS на caniuse.com.
  5. Клиентът поддържа WebSocket.
  6. Сървърът поддържа WebSocket.
  7. Ако поне едно от условията не е изпълнено, тогава се използва Long Pooling.
  8. Ако JSONP не е конфигуриран и връзката не е между домейни, тогава WebSocket ще се използва на сървъра и клиента, ако се поддържа от двата края.
  9. Ако сървърът или клиентът не поддържа WebSocket, ще се използват изпратени от сървъра събития, ако е възможно.
  10. Ако събитията, изпратени от сървъра, не могат да бъдат приложени, тогава ще бъде направен опит за използване на Forever Frame.
  11. Ако Forever Frame не успее, ще се използва Long Pooling.

Контрол на протокола

За да определите кой протокол използва приложението, трябва да активирате регистрирането на концентратора и да отворите прозорец на конзолата в браузъра.

За да активирате запис на събития в центъра за запис в браузъра, трябва да добавите следната команда към клиентския код:

  • В Internet Explorer отворете инструментите за разработчици с F12 и отворете раздела Конзола.
  • В прозореца на конзолата на Chromeотваря се с Ctrl+Shift+J.

Ако регистрирането е разрешено, тогава в прозореца на конзолата на браузъра можете да видите кой транспорт използва SignalR.

използва

Явна спецификация на транспортния протокол

Дефинирането на протокол отнема известно време на клиентските и сървърните ресурси. Ако възможностите на клиента са известни, тогава можете да посочите протокола веднага при установяване на връзка с клиента. Следващият кодов фрагмент показва установяване на връзка с помощта на транспортния протокол Long Pooling. Такъв код може да се използва, ако е известно със сигурност, че клиентът не поддържа други протоколи.

Можете също така да посочите реда, в който клиентът ще се опита да приложи протоколите. Следният код демонстрира опит за използване на WebSocket и ако не успее, тогава Long Polling.

Константите за дефиниране на транспортни протоколи са: webSockets, foreverFrame, serverSentEvents, longPolling.