Pull to refresh

Comments 26

А что насчет нагрузки на сервер? Что легче — 100 AJAX-запросов в секунду или 100 постоянно висящих соединений-сокетов? А 1000?
Вконтакте решили держать 1 коннект на 1 пользователя(не вкладку, а пользователя) менее затратно, чем делать периодические запросы к серверу.
По словам Девида Фоулера (David Fowler), автора SignalR, количество одновременных соединений в SignalR ограничено только памятью сервера. Иными словами нужно оценить возможные нагрузки и выбрать наиболее подходящий, исходя из имеющихся ресурсов вариант.
>SignalR может использовать в качестве транспорта и websockets, и longpooling
Это всё?

Sock.js. Supported transports, by name:
websocket (rfc6455)
websocket (hixie-76)
websocket (hybi-10)
xhr-streaming
xdr-streaming
iframe-eventsource
iframe-htmlfile
xhr-polling
xdr-polling
iframe-xhr-polling
jsonp-polling
SignalR поддерживает транспорты:

WebSockets
Server Sent Events, aka EventSource
Forever Frame
Ajax long polling
UFO just landed and posted this here
Немного ускорили web, остальное пришлось принести в жертву искусству.

Dimensions 700 × 683
File size 551.31KB
Забыли про очевидное: File size 173.98KB
Можно и так.
76,52 КБ (78 359 байт), 700px × 683px, 32 цвета
Теперь буду сидеть и нажимать в этой статье F5, чтобы увидеть совет от Хабровчан как наладить удобный PUSH вариант обновления сайта. Чем пользуется Гугл, чем пользуется vk, чем пользуются в реальных проектах и что правильнее?

Я так понимаю, основная сложность настроить сервер для поддержки постоянных соединений, чтобы он не упал.
UFO just landed and posted this here
Чем пользуется — я подразумеваю технология: websocket, longpolling или что то другое. Интересно, какие технологии PUSH в тренде.
Говоря о методах real-time web, то большинство проектов реализовано, используя comet, XHR long polling или их комбинации.
В скором времени, когда websockets будет поддерживаться в полной мере, то существует большая вероятность, что comet уйдет в прошлое.
Вопрос о том, сколько может выдержать 1 сервер актуален тогда, когда речь идет о небольшом проекте. Если в проекте количество соединений не превышает нескольких тысяч, то один сервер под SignalR вполне уместен. Если же речь идет о более нагруженных системах, то SignalR прекрасно масштабируется.
Делал небольшой проектик на socket.io, узким местом на рабочем ноуте (4 ядра 2.4 GHz 6Gb память) становился процессор уже при 3000 одновременных соединений. Залипал именно процесс handshake-а, и что интересно, еще сильнее залипал процесс разрыва большого количества одновременных соединений. Можете сказать, какое количество соединений можно комфортно обслужить одной машиной уровня www.hetzner.de/en/hosting/produkte_rootserver/ex4?
В ситуации, когда в качестве транспорта выбран websocket, то у webscoket разный handshake у разных протоколов. По этому сейчас полагаться только на websocket'ы ещё рано, так как даже не все браузеры поддерживают протокол webscoket.
SignalR будет использовать webscokets, если сможет. В ситуации, когда websocket использовать нет возможности, то SignalR выберет другой наиболее подходящий транспорт.

Делать какой-то оценочный прогноз про нагрузку весьма сложно, без готового решения, так как SignalR — это всего лишь инструмент. И он позволяет даже заменять какие-то его компоненты. (IMessageBus, IConnectionIdPrefixGenerator, IAssemblyLocator, IJavaScriptProxyGenerator, IJavaScriptMinifier, IJsonSerializer). Многое зависит от реализации, от того, как вы распоряжаетесь соединениями, используете ли Вы тот самый простой механизм, который описывается в данной статье, или же у вас разработан свой алгоритм.

Ко всему прочему, есть возможность самим посмотреть на производительность SignalR, воспользовавшись Microsoft ASP.NET SignalR Utilities
>> и что интересно, еще сильнее залипал процесс разрыва большого количества одновременных соединений
Если память не изменяет, то правильный разрыв TCP соединения, не менее, а то и более затратная операция чем устновление
Попробуйте использовать вместо socket.io sockJS
У меня с ним начинает валиться при ~8000 соединениях
Используем SignalR в нашем проекте, причем проксируем его через nginx, как и обычные запросы.
Поллинг забыли как страшный сон)

Кстати, WebSockets поддерживаются только начиная с Windows 8 (2012 Server).
Не работаю с виндами, поэтому вопрос: что значит WebSockets поддерживается с Windows 8?
Как связаны протокол транспорта и операционная система?
Говоря о SignalR, мы подразумеваем ASP.NET и IIS. А WebSockets поддерживается только в IIS 8, который идет только с этими ОС…
Кстати да, мне кажется стоило бы упомянуть .NET в заголовке.
Sign up to leave a comment.