loop loop loop loop loop loop loop [for all joined clients] [for all joined clients] [for all joined clients] [for all clients in client_id_list] [for all connected clients] [for all connected clients] [for all connected clients] Actor Network Client Chat Server OtherClientsNetwork Client ChatServer OtherClients 1.2: CHAT_INITIATED( lobby_id, current_lobby_participants ) 6.1: CHAT_POSTED( chat_id, logon_id, message ) 6: POST_CHAT( chat_id, logon_id, message ) 7.2: CHAT_LEFT( chat_id, client_id ) 7.1: CHAT_LEFT( chat_id, client_id ) 7: LEAVE_CHAT( chat_id, client_id ) 3.1: CHAT_JOINED( chat_id, client_id ) 3.2: CHAT_JOINED( chat_id, client_id ) 3: JOIN_CHAT( chat_id, client_id ) 2.2: CHAT_REQUESTED( chat_id, initiator_id, client_id_list ) 2.1: CHAT_INITIATED( chat_id, current_chat_participants ) 2: REQUEST_CHAT( initiator_id, client_id_list 5.1: CHAT_LEFT( lobby_id, logon_id ) 5: DISCONNECT( logon_id ) 4.1: CHAT_POSTED( lobby_id, logon_id, message ) 4: POST_CHAT( logon_id, lobby_id, message ) 1.1: CHAT_JOINED( lobby_id, logon_id ) 1: CONNECT( logon_id) Powered By Visual Paradigm Community Edition loop [for all clients attached to lobby] other : Client lobby : Chat joe : Client Server NetworkClient 1.3.2.1: notify_chat_event( lobby_id, CHAT_JOINED, logon_id ) 1.3.5.2: CHAT_INITIATED( lobby_id, participants ) 1.3.5.1: target = client_map.get(logon_id).getConnection() 1.2: client_map.put( logon_id, joe) 1.3.5: send_message(logon_id, CHAT_INITIATED 1.3.1: lobby := get_chat(lobbyId) 1.3.3: participants := get_participants() 1.3.4: notify_chat_event(lobby_id, "CHAT_INITIATED" + "participants") 1.3.2: join( joe ) 1.3: init( lobbyId ) 1.1: logon_id, connection 1: CONNECT( logon_id ) Powered By Visual Paradigm Community Edition