Python聊天室
cla***oom(CommandHandler):"""
包含多个用户的环境,负责基本的命令处理和广播
"""
def__init__(self, server):
self.server = server
self.sessions = []
defadd(self, session):
'一个用户进入房间'
self.sessions.append(session)
defremove(self, session):
'一个用户离开房间'
self.sessions.remove(session)
defbroadcast(self, line):
'向所有的用户发送指定消息'
for session in self.sessions:
session.push(line)
defdo_logout(self, session, line):
'退出房间'
raise EndSession
classLoginRoom(Room):
"""
刚登录的用户的房间
"""
defadd(self, session):
'用户连接成功的回应'
Room.add(self, session)
session.push('Connect Success')
defdo_login(self, session, line):
'登录命令处理'
name = line.strip()
ifnot name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)
classChatRoom(Room):
"""
聊天用的房间
"""
defadd(self, session):
'广播新用户进入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room.\n')
self.server.users = session
Room.add(self, session)
defremove(self, session):
'广播用户离开'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room.\n')
defdo_say(self, session, line):
'客户端发送消息'
self.broadcast(session.name + ': ' + line + '\n')
defdo_look(self, session, line):
'查看在线用户'
session.push('Online Users:\n')
for other in self.sessions:
session.push(other.name + '\n')
classLogoutRoom(Room):
"""
用户退出时的房间
"""
defadd(self, session):
'从服务器中移除'
try:
del self.server.users
except KeyError:
pass
页:
[1]