@startuml actor requestor actor sock_cli == fcgi invite == requestor o-> fcgi : open web page fcgi -> room_factory : invite(inviter,invitees) room_factory -> room_svr : invite room_svr --> room_svr : build room and add invitee room_svr --> room_factory : result room_factory -> fcgi : roomid,invitees fcgi -> publisher : roomid belong user publisher -> subscriber : roomid belong user subscriber -> access : roomid belong user access -> access : add roomid to user fcgi -> fcgi : generator authon authon fcgi -->o requestor : authon info == Login == requestor -> sock_cli : authon info collections access sock_cli -> access : join with roomkey access -> room_svr : join room_svr -> access : broad cast new user sock_cli -> access : msg with roomid access -> room_svr : msg room_svr -> access : broad cast msg @enduml