С Новым годом! Форум программистов, компьютерный форум, киберфорум
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 13
1

Приватные сообщения SignalR

04.05.2014, 02:29. Показов 2505. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я разрабатываю систему приватного обмена сообщениями между пользователями на сайте (примерно как в ВК/Facebook), используя при этом SignalR, и столкнулся со следующим:
Если пользователь 1 желает начать диалог с пользователем 2 то для отправки приватного сообщения следует написать чтото вроде Clients.Client(toUserId).sendPrivateMessage(UserName, message);
где toUserId - уникальный идентификатор, сгенерированный при входе пользователя 2 в онлайн (Context.ConnectionId)
Eсли пользователь 1 откроет диалог с пользователем 2, когда второй оффлайн, то toUserId второго сгенерирован не был и в базе не содержится, как следствие сообщения доставляться второму пользователю не будут (и это номрально).

Но проблема в том, что первый пользователь может открыть диалог со вторым, когда второй оффлайн, но потом второй может зайти в онлайн, и уже должен получать сообщения от первого, но такового не произойдет т.к диалог первого пользователя со вторым начинался в момент, когда второй был еще оффлайн и ID его в списке онлайн-пользователей еще не содержалось.
Может быть кто-нибудь подскажет оптимальное решение данной проблемы !
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2014, 02:29
Ответы с готовыми решениями:

Клиент-Сервер: приватные сообщения в чате
Добрый вечер форумчане. Делая приложения Клиент-Сервер на чистых сокетах, столкнулся с несколькими...

SignalR отправка сообщения в js
Добрый день. Есть к примеру Hub public class TestHub : Hub { public void SignalEvent(string...

[Twitter API] Как узнать принимает ли пользователь приватные сообщения
Сабж. Пользователь не фолловер и не друг.

приватные свойства
Здравствуйте уважаемые форумчане, не так давно начал собственносильно изучать С++. Подскажите мне...

4
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
04.05.2014, 10:09 2
Сообщения нужно записывать в БД. И когда заходит юзер, он лезет в базу и проверяет - нет ли там для него сообщений.
0
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 13
04.05.2014, 18:35  [ТС] 3
Несомненно, так и происходит, но проблема в ином:

при старте диалога в моем серверном хабе вызывается функция вида:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
        public void StartDiaog(string toUserName, string fromUserName)
        {
 
            var toUser = ConnectedUsers.FirstOrDefault(x => x.Name == toUserName) ;
 
            if (toUser != null)  // если пользователь, с которым стартует диалог - онлайн (в коллекции)
            {   
                 int ToUserId = toUser.ConnectionId;   // сохраняем его уникальный идентификатор для приватн.сообщений
            }
        }
 
     // .............. и затем при отправке сообщений в текущем диалоге вызывается функция вида
 
  
       
      Clients.Client(ToUserId).sendPrivateMessage(fromUserName, message);
но проблема опять же в том, что если пользователь начинает диалог со своим другом(который сейчас оффлайн) то отправляемые сообщения просто заносятся в БД и с помощью SignalR не отправляются. нно если его друг зайдет в онлайн, сообщения все равно не будут приходить ему т.к. он при входе получит список непрочитанных из БД и все(новые приходит не будут), потому как диалог-то был начат когда он(друг) был оффлайн и его Id в списке не содержался (
0
98 / 96 / 15
Регистрация: 28.03.2011
Сообщений: 565
04.05.2014, 18:45 4
Цитата Сообщение от Asked1 Посмотреть сообщение
Несомненно, так и происходит, но проблема в ином:
проблема в том, что ты не правильно построил всю логику изначально.
0
1 / 1 / 0
Регистрация: 26.04.2014
Сообщений: 13
04.05.2014, 18:46  [ТС] 5
Подскажите тогда, пожалуйста, оптимальное на ваш взгляд решение
0
04.05.2014, 18:46
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.05.2014, 18:46
Помогаю со студенческими работами здесь

Приватные виды
Доброго времени суток! Порылся я тут на форуме и не нашел... пожалуйста, подскажите, как можно...

Приватные Qt хедеры и cmake
Всем привет. Есть такая необходимость подключить приватные хедеры. Но я что то не могу понять как...

Прототипное наследование и приватные переменные
Можно ли как-то сделать разное состояние на каждый финальный объект для приватных переменных, не...

friend не видит приватные поля
Всем привет. Возникла проблема. Есть такой header #include <windows.h> #include <windowsx.h> ...

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

Приватные ключи биткоин по питон 2.7
Здравствуйте, я новичок в этой теме прошу помощи.Есть в наличии 300-500 приват. ключей, как из них...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
Полезные поделки на Arduino, которые можно сделать самому
raxper 06.01.2025
Arduino как платформа для творчества Arduino представляет собой удивительную платформу для технического творчества, которая открывает безграничные возможности для создания уникальных проектов. Эта. . .
Подборка решений задач на Python
IT_Exp 06.01.2025
Целью данной подборки является предоставление возможности ознакомиться с различными задачами и их решениями на Python, что может быть полезно как для начинающих, так и для опытных программистов. . . .
С чего начать программировать микроконтроллер­­ы
raxper 06.01.2025
Введение в мир микроконтроллеров Микроконтроллеры стали неотъемлемой частью современного мира, окружая нас повсюду: от простых бытовых приборов до сложных промышленных систем. Эти маленькие. . .
Из чего собрать игровой компьютер
inter-admin 06.01.2025
Сборка игрового компьютера требует особого внимания к выбору комплектующих и их совместимости. Правильно собранный игровой ПК не только обеспечивает комфортный геймплей в современных играх, но и. . .
Обновление сайта www.historian.b­y
Reglage 05.01.2025
Обещал подвести итоги 2024 года для сайта. Однако начну с того, что изменилось за неделю. Добавил краткий урок по последовательности действий при анализе вредоносных файлов и значительно улучшил урок. . .
Как использовать GraphQL в C# с HotChocolate
Programming 05.01.2025
GraphQL — это современный подход к разработке API, который позволяет клиентам запрашивать только те данные, которые им необходимы. Это делает взаимодействие с API более гибким и эффективным по. . .
Модель полного двоичного сумматора с помощью логических операций (python)
AlexSky-coder 04.01.2025
def binSum(x:list, y:list): s=^y] p=x and y for i in range(1,len(x)): s. append((x^y)^p) p=(x and y)or(p and (x or y)) return s x=list() y=list()
Это мы не проходили, это нам не задавали...(аси­­­­­­­­­­­­­­­­­­­­­­­­­­х­р­о­н­­н­­­ы­­й счётчик с управляющим сигналом зад
Hrethgir 04.01.2025
Асинхронный счётчик на сумматорах (шестиразрядный по числу диодов на плате, но наверное разрядов будет больше - восемь или шестнадцать, а диоды на старшие), так как триггеры прошли тестирование и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru