SignalR или веб-сокет? Какой из них использовать для создания веб-чата для мобильных устройств?

Мне нужно создать веб-мессенджер для мобильных устройств. Для этого я хочу, чтобы моя связь между сервером и клиентом была открыта, чтобы сервер мог отправлять сообщения без какого-либо запроса клиента. Я нашел SignalR и Websockets подходящими для этого. Но я не уверен, какой из них использовать.


person Prateek Saini    schedule 11.04.2013    source источник
comment
stackoverflow.com/questions/9307675/ stackoverflow.com/questions/9524591/   -  person Damonsson    schedule 11.04.2013
comment
Я получил все ответы из этого блога. blogs.microsoft.co.il/ blogs/ranw/archive/2013/02/17/ Спасибо всем за ответы на мой вопрос.   -  person Prateek Saini    schedule 11.04.2013


Ответы (2)


Под капотом SignalR использует веб-сокеты, длительные опросы, события, отправленные сервером, или кадры Forever, в зависимости от того, что поддерживается клиентом и браузером, для включения функций реального времени в приложениях. Вам следует рассмотреть возможность его использования, чтобы избежать проблем с совместимостью и получить дополнительные функции, которые можно использовать для разработки приложений реального времени. Вы можете обратиться к следующей документации для получения более подробной информации:

https://github.com/SignalR/SignalR/wiki

person Abhishek Nanda    schedule 11.04.2013
comment
Я новичок в SignalR. Когда я запускал приложение ранее, оно показывало SSE (serverSentEvents) в Connection:, но теперь показывает Connection: Keep-alive и использует XHR. Я использую плагин Firebug в Mozilla. - person Prateek Saini; 11.04.2013
comment
Вы можете определить используемый транспорт через свойство транспорта в соединении или концентраторном соединении после того, как соединение было запущено. SignalR пытается использовать веб-сокеты, но если и сервер, и клиент не поддерживают его, он переключается на другие транспорты. Вы также можете включить ведение журнала с помощью $connection.myhub.logging = true, чтобы увидеть, какой транспорт используется. - person Abhishek Nanda; 11.04.2013

ответ таков: это действительно зависит. это зависит от вашего масштаба, я не говорю, что SignalR плохо масштабируется. речь идет о поддержке клиентских библиотек SignalR на мобильных устройствах.

мы использовали signalr некоторое время и столкнулись со многими головными уборами, а затем вернулись к необработанным веб-сокетам.

по моему опыту:

1- Доза SignalR не поддерживает Websocket на клиентах xamarin. (поскольку он использует типы в System.Net.WebSockets, а это пространство имен недоступно ни в одном из профилей PCL.), и они не планируют добавлять его в ближайшее время (я связался с ними на github). и, возможно, вам не нужны другие решения (долгий опрос или вечный кадр и ... потребляют в 5 раз больше памяти, чем WebSockets).

2- он обеспечивает жалкий контроль над фактическим транспортом, который доставит вам большие проблемы на мобильных устройствах при работе с режимом Doze, блокировкой экрана и т. д. .... (для этих ситуаций есть обходные пути, но они в основном очень грязные).

в заключение, я думаю, что для мобильных устройств, если у вас есть время, используйте необработанные System.Net.WebSockets, которые реализованы в моно (согласно тому, что сказал Джеймс Джеймс Монтеманьо) и основной .net. в противном случае вы можете использовать пакет nuget Microsoft.WebSockets, который, однако, больше не поддерживается.

person SHM    schedule 13.09.2016