Короткий ответ на ваш вопрос: «Какова цель группы? И как мне ее использовать?»
Группы в SignalR предоставляют метод для рассылки сообщений указанным подмножествам подключенных клиентов. Группа может иметь любое количество клиентов, а клиент может быть членом любого количества групп
Для получения подробной информации о группе, пожалуйста, посетите эту официальную ссылку
Примечание. В вашем случае группу можно использовать для представления комнаты чата.
Ответьте на ваш второй вопрос ... «Как я могу гарантировать, что в следующий раз, когда они вернутся в комнату, что сообщения будут доставлены им?»
Я считаю, что вам нужно поддерживать / сохранять историю чатов комнаты в постоянном хранилище, например, в базе данных или, возможно, в вашем ChatHub (это зависит от вашего бизнес-домена). Таким образом, каждый раз, когда новый пользователь присоединяется к комнате или присоединяется к ней, он / она может видеть все предыдущие сообщения в этой комнате. ChatHub будет обязан отправлять историю чата каждому новому присоединяющемуся пользователю.
Ответ на вопрос: «Но как мне гарантировать, что человек, присоединяющийся к комнате, получит новые сообщения?»
Всякий раз, когда человек подключается к ChatHub, вам необходимо сохранить его соединение с номером комнаты, например:
Groups.Add(Context.ConnectionId, "Your Chat Room Name");
Как только новый пользователь добавлен в группу, при следующей трансляции сообщения в группе вновь присоединенный пользователь также получит сообщение. Вот так:
Clients.Group("Your chat room name").SendAsync("ReceiveMessage", user, message);
Надеюсь, это поможет.