2012-03-01 3 views
8

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

Я следил за the guide, чтобы создать очень частую демонстрацию чата. Затем я развернул демо на своем IIS и начал общаться с собой. Все клиенты были в одной сети WiFi.

Настольные браузеры работали более или менее ОК.

Однако Safari на iOS 4.2 и IE на WP7.10 - они оба всосались. Иногда ничего не происходило, когда я нажал кнопку «пост». Иногда исходящие сообщения были отправлены ОК на рабочий стол firefox, однако входящих сообщений не было.

Возможно, мне что-то не хватает? Может, мне нужен jQuery mobile вместо обычного? Может быть, мне нужно просто настроить IIS/web.config/что угодно, и SignalR будет процветать и работать безупречно даже через дрянной мобильный интернет?

Или это означает, что, поскольку он не работает даже во время WiFi в течение одного хопа с веб-сервера, я должен выбросить SignalR и просто написать JavaScript для опроса конечной точки JSON для новых сообщений?

Заранее спасибо!

+1

Я тоже столкнулись с этой проблемой. Очень интересуется любыми ответами. (нет ли кнопки подписки, поэтому мне не нужно оставлять комментарий) – tgmdbm

+1

@tgmdbm вы можете задать вопрос по RSS. RSS-канал для этого вопроса: http://stackoverflow.com/feeds/question/9509124 –

ответ

0

Не все мобильные браузеры (например, android, opera mini) поддерживают websockets. Вы найдете хорошую диаграмму поддерживающих браузеров по адресу http://www.hanselman.com/blog/YourUsersDontCareIfYouUseWebSockets.aspx

+7

Он не нуждается в WebSockets. AFAIK, по умолчанию SignalR использует длительный опрос. – Soonts

+0

О, мне очень жаль, ты прав. SignalR ** может ** использовать WebSockets, если браузер поддерживает его, иначе он использует длительный опрос. – lurkerbelow

6

Я разрабатываю приложение с телефонной связью (это означает, что использует браузер Safari) и SignalR для Android и IPhone. Основная проблема, с которой я столкнулся, - это iOS 6.x, потому что SignalR не подключался к конфигурации по умолчанию. Я нашел обходное решение для этого, и я объяснил это here. Дайте мне знать, если вы сочтете это полезным.

Этот код будет имитировать соединение, проверять сообщения, отключать и ждать 5 секунд для решения проблемы iOS.

В JS добавить

$.connection.hub.start({ transport: 'longPolling' }).done(function (myHubConnection) { }); 

и в Application_Start() добавить

GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(1); 
Microsoft.AspNet.SignalR.Transports.LongPollingTransport.LongPollDelay = 5000; 
RouteTable.Routes.MapHubs(); 
+2

Пожалуйста, скопируйте обходной путь сюда, чтобы отправить сообщение. –

+0

Готово. Я редактировал сообщение с кодом. –

+0

Cheers, теперь он подходит для +1. :) –