2016-01-26 2 views
0

Я новичок в SignalR, и я пытаюсь использовать его для написания в основном прославленной системы счетчиков приема-приема. Я работаю так, чтобы люди «встречной стороны» могли продвигать номера, и они будут отображаться на «стороне клиента», а также на других компьютерах «счетчика». Однако я заметил, что, если я открою новую страницу «счетчик», он не знает, какие числа остальные клиенты будут сейчас, если кто-то не повторяет номера еще до того, как будет создана новая страница. Если новое окно пытается увеличить число, оно снова сбрасывает всех в 1. Есть ли способ в SignalR для нового клиента увидеть текущее состояние других клиентов или мне придется перенести данные на внешний источник, такой как база данных или текстовый файл? (База данных кажется излишней для моих 3-5 частей данных.)Может ли SignalR рассказать новым клиентам о состоянии существующих данных клиентов?

Я могу предоставить некоторые из моего кода, если это необходимо, но то, что у меня есть, и это довольно простая версия концентратора SignalR. Очень похоже на вездесущие чат-учебники, за исключением того, что у меня есть две клиентские страницы, одна из которых только для приема, и та, которая может отправлять и получать.

ответ

0

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

0

Вам нужен какой-то механизм для хранения «состояния» вашего текущего счетчика на сервере, чтобы он сохранял на нескольких клиентских сеансах. Поскольку у вас нет доступа к обычному сеансу .Net, вы можете использовать HttpRuntime.Cache или состояние прокси-сервера Signal-R. Cache

Веба-сервер:

System.Web.HttpRuntime.Cache.Get("Counter") 

Client Proxy Состояние:

ChatHubProxy.state.counter= 10; 

Надеется, что это помогает!