Комментарии 26
А что насчет нагрузки на сервер? Что легче — 100 AJAX-запросов в секунду или 100 постоянно висящих соединений-сокетов? А 1000?
+5
Вконтакте решили держать 1 коннект на 1 пользователя(не вкладку, а пользователя) менее затратно, чем делать периодические запросы к серверу.
+1
По словам Девида Фоулера (David Fowler), автора SignalR, количество одновременных соединений в SignalR ограничено только памятью сервера. Иными словами нужно оценить возможные нагрузки и выбрать наиболее подходящий, исходя из имеющихся ресурсов вариант.
+1
>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
Это всё?
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
+1
Только не pooling, а polling.
+2
НЛО прилетело и опубликовало эту надпись здесь
Теперь буду сидеть и нажимать в этой статье F5, чтобы увидеть совет от Хабровчан как наладить удобный PUSH вариант обновления сайта. Чем пользуется Гугл, чем пользуется vk, чем пользуются в реальных проектах и что правильнее?
Я так понимаю, основная сложность настроить сервер для поддержки постоянных соединений, чтобы он не упал.
Я так понимаю, основная сложность настроить сервер для поддержки постоянных соединений, чтобы он не упал.
+1
НЛО прилетело и опубликовало эту надпись здесь
Чем пользуется — я подразумеваю технология: websocket, longpolling или что то другое. Интересно, какие технологии PUSH в тренде.
+1
Вопрос о том, сколько может выдержать 1 сервер актуален тогда, когда речь идет о небольшом проекте. Если в проекте количество соединений не превышает нескольких тысяч, то один сервер под SignalR вполне уместен. Если же речь идет о более нагруженных системах, то SignalR прекрасно масштабируется.
+1
Делал небольшой проектик на socket.io, узким местом на рабочем ноуте (4 ядра 2.4 GHz 6Gb память) становился процессор уже при 3000 одновременных соединений. Залипал именно процесс handshake-а, и что интересно, еще сильнее залипал процесс разрыва большого количества одновременных соединений. Можете сказать, какое количество соединений можно комфортно обслужить одной машиной уровня www.hetzner.de/en/hosting/produkte_rootserver/ex4?
+1
В ситуации, когда в качестве транспорта выбран websocket, то у webscoket разный handshake у разных протоколов. По этому сейчас полагаться только на websocket'ы ещё рано, так как даже не все браузеры поддерживают протокол webscoket.
SignalR будет использовать webscokets, если сможет. В ситуации, когда websocket использовать нет возможности, то SignalR выберет другой наиболее подходящий транспорт.
Делать какой-то оценочный прогноз про нагрузку весьма сложно, без готового решения, так как SignalR — это всего лишь инструмент. И он позволяет даже заменять какие-то его компоненты. (IMessageBus, IConnectionIdPrefixGenerator, IAssemblyLocator, IJavaScriptProxyGenerator, IJavaScriptMinifier, IJsonSerializer). Многое зависит от реализации, от того, как вы распоряжаетесь соединениями, используете ли Вы тот самый простой механизм, который описывается в данной статье, или же у вас разработан свой алгоритм.
Ко всему прочему, есть возможность самим посмотреть на производительность SignalR, воспользовавшись Microsoft ASP.NET SignalR Utilities
SignalR будет использовать webscokets, если сможет. В ситуации, когда websocket использовать нет возможности, то SignalR выберет другой наиболее подходящий транспорт.
Делать какой-то оценочный прогноз про нагрузку весьма сложно, без готового решения, так как SignalR — это всего лишь инструмент. И он позволяет даже заменять какие-то его компоненты. (IMessageBus, IConnectionIdPrefixGenerator, IAssemblyLocator, IJavaScriptProxyGenerator, IJavaScriptMinifier, IJsonSerializer). Многое зависит от реализации, от того, как вы распоряжаетесь соединениями, используете ли Вы тот самый простой механизм, который описывается в данной статье, или же у вас разработан свой алгоритм.
Ко всему прочему, есть возможность самим посмотреть на производительность SignalR, воспользовавшись Microsoft ASP.NET SignalR Utilities
+1
>> и что интересно, еще сильнее залипал процесс разрыва большого количества одновременных соединений
Если память не изменяет, то правильный разрыв TCP соединения, не менее, а то и более затратная операция чем устновление
Если память не изменяет, то правильный разрыв TCP соединения, не менее, а то и более затратная операция чем устновление
0
Попробуйте использовать вместо socket.io sockJS
У меня с ним начинает валиться при ~8000 соединениях
У меня с ним начинает валиться при ~8000 соединениях
+1
Спасибо, интересная статья.
+1
Используем SignalR в нашем проекте, причем проксируем его через nginx, как и обычные запросы.
Поллинг забыли как страшный сон)
Кстати, WebSockets поддерживаются только начиная с Windows 8 (2012 Server).
Поллинг забыли как страшный сон)
Кстати, WebSockets поддерживаются только начиная с Windows 8 (2012 Server).
0
Не работаю с виндами, поэтому вопрос: что значит WebSockets поддерживается с Windows 8?
Как связаны протокол транспорта и операционная система?
Как связаны протокол транспорта и операционная система?
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
SignalR в помощь, или как оживить web