Какво е SignalR
Механизъм за избор на протокол
Следват стъпките, които SignalR предприема при избора на транспортен протокол:
- Ако браузърът е Internet Explorer 8 или по-стар, тогава се използва Long Pooling.
- Ако JSONP е активиран (т.е. параметърът jsonp е зададен на true, когато връзката е установена), се използва Long Pooling.
- Ако възникне връзка между домейни (т.е. крайната точка на SignalR и уеб страницата са в различни домейни), тогава WebSocket ще се използва при следните условия:
- Клиентът поддържа CORS (Cross Origin Resource Sharing). Подробна информация за това кои клиенти поддържат CORS можете да намерите тук: CORS на caniuse.com.
- Клиентът поддържа WebSocket.
- Сървърът поддържа WebSocket. Ако поне едно от условията не е изпълнено, тогава се използва Long Pooling.
- Ако JSONP не е конфигуриран и връзката не е между домейни, тогава WebSocket ще се използва на сървъра и клиента, ако се поддържа от двата края.
- Ако сървърът или клиентът не поддържа WebSocket, ще се използват изпратени от сървъра събития, ако е възможно.
- Ако събитията, изпратени от сървъра, не могат да бъдат приложени, тогава ще бъде направен опит за използване на Forever Frame.
- Ако Forever Frame не успее, ще се използва Long Pooling.
Контрол на протокола
За да определите кой протокол използва приложението, трябва да активирате регистрирането на концентратора и да отворите прозорец на конзолата в браузъра.
За да активирате запис на събития в центъра за запис в браузъра, трябва да добавите следната команда към клиентския код:
- В Internet Explorer отворете инструментите за разработчици с F12 и отворете раздела Конзола.
- В прозореца на конзолата на Chromeотваря се с Ctrl+Shift+J.
Ако регистрирането е разрешено, тогава в прозореца на конзолата на браузъра можете да видите кой транспорт използва SignalR.
Явна спецификация на транспортния протокол
Дефинирането на протокол отнема известно време на клиентските и сървърните ресурси. Ако възможностите на клиента са известни, тогава можете да посочите протокола веднага при установяване на връзка с клиента. Следващият кодов фрагмент показва установяване на връзка с помощта на транспортния протокол Long Pooling. Такъв код може да се използва, ако е известно със сигурност, че клиентът не поддържа други протоколи.
Можете също така да посочите реда, в който клиентът ще се опита да приложи протоколите. Следният код демонстрира опит за използване на WebSocket и ако не успее, тогава Long Polling.
Константите за дефиниране на транспортни протоколи са: webSockets, foreverFrame, serverSentEvents, longPolling.