2015-01-15 1 views
1

Я пишу индивидуальный чат в Signalr в унаследованном проекте Webforms (примечание VB.net). В основном, я ищу результат, например, Facebook-чат, так что, как только пользователь входит в систему, они классифицируются как «онлайн».С чего начать подключение чат-хаба для приложения чата Signalr и Webforms

У меня есть некоторый успех. В моем методе входа я добавляю свой зарегистрированный пользователь в статический список OnlineUsers. У меня есть страница Chat.aspx, которая при обновлении запускает соединение концентратора SignalR, и я могу видеть зарегистрированный пользователь (загруженный из метода OnConnected).

Очевидно, что я не хочу перезагружать страницу Chat.aspx, чтобы видеть всех пользователей, которые только что вошли в систему, так что мой вопрос: безопасно ли запустить соединение с моей главной страницы, чтобы весь пользовательский интерфейс обновляется, когда пользователь входит/отключен? Я предполагаю, что это вызовет множество ненужных соединений?

Вот мой код.

Войти успех (добавляет к статическому списку OnlineMembers

OnlineMember.AddOnlineMember(member.UserId, member.UserName)

Chat.aspx

$.connection.hub.start(function() { chat.server.getAllOnlineStatus(); });

ответ

0

Радж, я думаю, вы бы лучше от называть рутинным момент кто-то действительно регистрируется.

Если у вас есть процедура входа в систему, которая добавляет пользователей в список OnlineUsers, то вы можете инициировать обновление ВСЕХ клиентов, вызывая метод, который обновляет список онлайн-пользователей.

Функция, находящаяся на вашей странице Chat.aspx, которая запускается в любое время, кроме входа, будет бесполезной. Красота SignalR - это постоянство для клиента (клиентов) и то, как вы можете настроить «Все» или «Звонок» при запуске подпрограмм на стороне клиента.

(Здесь на стороне сервера концентратора вызова подпрограммы, зарегистрированной в ASPX. Вы можете передать данные в нем в качестве аргумента, если требуется.)

Следующая может быть сделано после успешной регистрации нового клиента : ie Clients.Caller.updateOnlineUserList(); -или- Клиенты.Caller.updateOnlineUserList (someData);

(Очевидно, вам нужно будет написать код для «updateOnlineUserList», который обновит список пользователей, отображаемый на странице.)

 Смежные вопросы

  • Нет связанных вопросов^_^