Я хотел бы написать простой чат по принципу omegle.com. Я написал, что если пользователь входит в сервер и пустая очередь создает новую группу и попадает в очередь. Когда другой человек входит, он соединяется с этим в очереди. Вот мой код:Частный чат с SignalR - поговорить с незнакомцами
public class UserGroup
{
public string GroupName { get; set; }
}
public class ChatHub : Hub
{
public static Queue<UserGroup> Users = new Queue<UserGroup>();
public static string Group { get; set; }
public Task JoinGroup(string groupName)
{
return Groups.Add(Context.ConnectionId, groupName);
}
public override System.Threading.Tasks.Task OnConnected()
{
if(Users.Count == 0)
{
var user = new UserGroup { GroupName = Context.ConnectionId };
Users.Enqueue(user);
Group = user.GroupName;
JoinGroup(user.GroupName);
}
else
{
JoinGroup(Users.Peek().GroupName);
Group = Users.Peek().GroupName;
Users.Dequeue();
}
return base.OnConnected();
}
public void SayHello(string name, string helloMsg)
{
Clients.Caller.Hello(name, helloMsg);
}
public void Send(string msg)
{
Clients.Group(Group).SendMessage(msg);
}
}
К сожалению, когда я подключаюсь к кому-то другому, все ломается и не создает новую группу для новых людей. Все статические данные, но, к сожалению, не SignalR позволяет иначе. У вас есть идея, как обойти это?