2016-09-20 2 views
0

Прежде чем я потрачу время на прототип этого, я думал, что попрошу внести некоторые данные от других.SignalR & browsers Локальное хранилище Использование дела

У меня есть список на веб-странице, когда пользователь выходит за пределы диапазона (сотовая связь, беспроводная связь и т. Д.). Мне нужно, чтобы пользователь мог вносить изменения в данные для каждого элемента списка, и изменения сохраняются локально пока соединение не будет восстановлено.

Так что я думал, что для достижения этой цели нужно использовать SignalR и локальное хранилище браузеров.

SignalR - это соединение для отправки/получения данных в реальном времени.

Если состояние соединения подключено, я выполняю как обычно, отправляя изменения формы в реальном времени.

Если состояние соединения отключено, локальное хранилище используется для хранения модифицированных данных формы до тех пор, пока не произойдет пересоединение с концентратором, после чего я отправляю данные на сервер для сохранения.

Может ли кто-нибудь стрелять в отверстия? За и против? Лучший подход?

Мой стек JavaScript, HTML5, C# API

Заранее спасибо за ваши мысли.

ответ

0

Используя SignalR для веб-API ASP.NET, я бы порекомендовал его.

Убедитесь, что выполнены все требования, позволяющие SignalR подключаться с использованием «WebSockets», поскольку это истинное двухстороннее соединение и обеспечит наилучший способ обнаружения разъединений.

Если SignalR не может использовать сетевые сокеты, он возвращается к механизмам, таким как «Server Sent Events», который отлично работает, а не как сетевые сокеты.

См. http://www.asp.net/signalr/overview/getting-started/supported-platforms для получения информации о минимальных требованиях к сетевым розеткам с SignalR.

+0

serverSentEvents не опрос - сервер толкая данные клиенту в потоковом режиме – Pawel

+0

В ходе тестирования я заметил serverSentEvents имел форму держать в живых, как таковой предполагается, что способ соединения является формой опроса. Скорректированный ответ, спасибо. –

0

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

В вашем случае вы можете проверить службы данных Ado.Net, которые были созданы специально для этой цели.

Если вы хотите сделать это с помощью локального хранилища браузера, вы всегда можете сохранить данные на сервере, и в случае, если произошла ошибка подключения, сохраните ее в локальном хранилище и используйте одно соединение SignalR, чтобы знать состояние соединения (онлайн/офлайн), после того, как вы подключитесь к Интернету, вы можете опубликовать обновления, хранящиеся в локальном хранилище, на сервере

+0

Почему signalr не должен использоваться для получения данных с сервера? – Tester

+0

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

+0

Если вы используете signalr, и вам нужно отправлять только небольшие данные на сервер, я не вижу необходимости использовать WebAPI параллельно. SignalR был разработан для обоих способов. Или вы можете показать мне ссылку, где это написано? – Tester

0

Если вам не нравится делать это самостоятельно, возможно, PouchDB решает твоя проблема. Вам не нужны никакие материалы SignalR или WebAPI.

https://pouchdb.com/