SignalR и присоединение к группам

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

Сначала я попытаюсь описать контекст реализации. Таким образом, пользователь в существующей системе захочет провести собрание по заданной теме, а затем создаст комнату с заданным именем/идентификатором, затем пригласит в нее других, и тогда это будет в основном похоже на приватный чат.

Таким образом, шаги, которые я предполагаю, будут такими: в качестве хоста создайте комнату и присоединитесь к ней, а затем отправьте приглашения, которые потребуют от пользователей клика, который каким-то образом сообщит серверу, в какую комнату присоединиться.

Теперь я вижу из документации, что есть метод Join и Disconnect, к которому можно подключиться, чтобы поместить кого-то в группу, однако кажется, что у Join нет другого контекста, связанного с ним, кроме строки запроса, поэтому я немного запутался в том, что запускает соединение, поскольку я ожидаю, что это будет метод, запускаемый вручную для клиента, передающего некоторый объект, дающий контекст относительно того, в какую комнату их поместить, поскольку у вас могут быть сотни частных комнат.

Итак, как вы даете методу «Присоединение» некоторый контекст, а методу «отключение» — чтобы они знали, к какой комнате вы запрашиваете присоединение, как если бы он не запускался вручную, как вы можете установить строку запроса, и если это вручную сработало, почему вы не можете отправить пользовательский объект. т.е.

public Task Join()
{
    var groupName = Context.QueryString["some-room-identifier"];
    return Groups.Add(Context.ConnectionId, groupName);
}

vs

public Task Join(string groupName)
{
    return Groups.Add(Context.ConnectionId, groupName);
}

Значит, я что-то упустил или есть какой-то способ дать контекст присоединяющемуся пользователю, чтобы поместить его в нужное место в первый раз?

7
задан Grofit 18 May 2012 в 14:52
поделиться