Предположим, у меня есть два концентратора в моем приложении SignalR. Я сопоставляю connectionIds -> userIds в локальном кеш-словаре.SignalR: Может ли событие OnDissconnect концентратора вызываться только для конкретного концентратора?
Текущая логика примерно так:
С OnConnected -> добавить новую запись «ConnectionID в USERID» в словаре (если он не существует).
С OnDisconnected -> удалить, что «ConnectionID в USERID» запись из словаря (если он существует)
Есть ли сценарий, который HUB1 будет отключен во время Hub2 будет оставаться на связи?
Если это так, моя текущая логика ошибочна, поскольку она удалит запись из словаря, хотя Hub2 все еще подключен. который потребует от меня обработки 2 словарей для каждого концентратора.
P.S. Я просмотрел документы SignalR для обработки сопоставлений соединений, и всегда кажется, что они используют один словарь для одного концентратора. поэтому я хочу знать, действительно ли это необходимо.
Привет Офир. Просто предложение, вы можете изучить использование однопользовательских групп, чтобы сохранить это сопоставление. Это проще реализовать, и вам не нужно подчеркивать, что вы поддерживаете словарь. Проверьте [это] (http://stackoverflow.com/questions/37455608/handling-concurrent-connections-in-siganlr/37458129#37458129) –
Очень элегантное решение! Думаю, я пойду по этому пути. спасибо – Ofir