public async Task handleUser(ChatMember user) { AddMember(user); await ReadUserMessages(user); RemoveMember(user); }
public async Task handleUser(ChatMember member, int chatId) { if (_chatRooms.TryGetValue(chatId, out ChatRoom room)) { await room.handleUser(member); } }
private async Task <(int chatId, int userId)> waitForData(ChatMember member) { var message = await member.getMessage(); var id = message.message.Split(";"); int chatId = Int32.Parse(id[0]); int userId = Int32.Parse(id[1]); return(chatId, userId); }
private async Task ReadUserMessages(ChatMember member) { try { while (true) { var message = await member.getMessage(); _chatMessages.Add(message); } } catch (Exception) { } finally { //just finish } }
public async void handleUser(WebSocket webSocket, TaskCompletionSource <object> end) { try { var user = new ChatMember(webSocket); var data = await waitForData(user); var userData = await getUser(data.userId); user.init(userData); await _chatRooms.handleUser(user, data.chatId); } catch (Exception) { } finally { await webSocket.CloseAsync(WebSocketCloseStatus.Empty, null, CancellationToken.None); end.TrySetResult(new object()); } }
private void RemoveMember(ChatMember member) { _members.TryRemove(member, out ChatMember outValue); }
private void AddMember(ChatMember member) { _members.TryAdd(member, member); }