vivion27 发表于 2018-8-7 09:13:00

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]
查看完整版本: Python聊天室