示例#1
0
 def on_server_exit():
     room_userlist_all = userlist_prefix + room_prefix + "[0-9]*"
     keys = c.keys(room_userlist_all)
     for key in keys:
         users = c.smembers(key)
         for user in users:
             c.delete(user)
             
         c.delete(key)
示例#2
0
    def on_server_exit():
        room_userlist_all = userlist_prefix + room_prefix + "[0-9]*"
        keys = c.keys(room_userlist_all)
        for key in keys:
            users = c.smembers(key)
            for user in users:
                c.delete(user)

            c.delete(key)
示例#3
0
 def get_room_list():
     lists = list()
     all_room_keys = c.keys(room_prefix + "[0-9]*")
     for room_key in all_room_keys:
         temp = dict()
         room_id = int(c.hget(room_key, "room_id"))
         if room_id != lobby_room_id:
             temp['room_id'] = room_id
             temp['room_magic_id'] = c.hget(room_key, "room_magic_id")
             temp['room_name'] = c.hget(room_key, "room_name")
             temp['room_max_user'] = c.hget(room_key, "room_max_user"),
             temp['room_waiter_list'] = len(ChatroomManager.get_users_for_room_id(room_id))
             lists.append(temp)
 
     lists.sort()
     return lists
示例#4
0
 def get_all_user_info():
     '''
     返回所有房间的用户,和用户的详细信息
     '''
     userlist_all = userlist_prefix + room_prefix + "[0-9]*"
     keys = c.keys(userlist_all)
     final_list = list()
     for key in keys:
         room_list = dict()
         room_list[key] = list()
         room_users = c.smembers(key)
         for user in room_users:
             user_detail = dict()
             user_detail[user] = c.hgetall(user)
             room_list[key].append(user_detail)
         final_list.append(room_list)
     return final_list
示例#5
0
 def userinfo_del(user):
     """
     因为这个用户信息是不和任何房间关联的
     所以要先判断用户,是否已经不在任何聊天室内
     如果是则删除用户
     """
     userlist_all = userlist_prefix + room_prefix + "[0-9]*"
     keys = c.keys(userlist_all)
     for key in keys:
         users = list(c.smembers(key))
         if user in users:
             return
     # 不删除用户的信息, 在userinfo_add中覆盖
     # 否则浏览器刷新会导致调用user_del
     # 改为设置用户离线标志
     # c.delete(user)
     c.hdel(user, "offline")
示例#6
0
 def user_del(room_id=None, user=None):
     # 如果用户访问/logout, 循环删除多个房间内的同一个用户
     # 否则只是用户关闭了浏览器标签, 删除对应房间的用户
     if not room_id:
         userlist_all = userlist_prefix + room_prefix + "[0-9]*"
         keys = c.keys(userlist_all)
         for key in keys:
             if c.sismember(key, user):
                 c.srem(key, user)
     else:
         cls = UserManager
         # 首先从删除某个房间内的用户
         userlist_set = userlist_prefix + room_prefix + str(room_id)
         c.srem(userlist_set, user)
         # 再判断此用户是否还在别的房间,如果不是则删除用户
         # 删除用户已改为设置用户离线标志
         cls.userinfo_del(user)
示例#7
0
    def get_room_list():
        lists = list()
        all_room_keys = c.keys(room_prefix + "[0-9]*")
        for room_key in all_room_keys:
            temp = dict()
            room_id = int(c.hget(room_key, "room_id"))
            if room_id != lobby_room_id:
                temp['room_id'] = room_id
                temp['room_magic_id'] = c.hget(room_key, "room_magic_id")
                temp['room_name'] = c.hget(room_key, "room_name")
                temp['room_max_user'] = c.hget(room_key, "room_max_user"),
                temp['room_waiter_list'] = len(
                    ChatroomManager.get_users_for_room_id(room_id))
                lists.append(temp)

        lists.sort()
        return lists
示例#8
0
 def get_all_user_info():
     '''
     返回所有房间的用户,和用户的详细信息
     '''
     userlist_all = userlist_prefix + room_prefix + "[0-9]*"
     keys = c.keys(userlist_all)
     final_list = list()
     for key in keys:
         room_list = dict()
         room_list[key] = list()
         room_users = c.smembers(key)
         for user in room_users:
             user_detail = dict()
             user_detail[user] = c.hgetall(user)
             room_list[key].append(user_detail)
         final_list.append(room_list)
     return final_list
示例#9
0
 def userinfo_del(user):
     """
     因为这个用户信息是不和任何房间关联的
     所以要先判断用户,是否已经不在任何聊天室内
     如果是则删除用户
     """
     userlist_all = userlist_prefix + room_prefix + "[0-9]*"
     keys = c.keys(userlist_all)
     for key in keys:
         users = list(c.smembers(key))
         if user in users:
             return
     # 不删除用户的信息, 在userinfo_add中覆盖
     # 否则浏览器刷新会导致调用user_del
     # 改为设置用户离线标志
     # c.delete(user)
     c.hdel(user, "offline")
示例#10
0
 def user_del(room_id=None, user=None):
     # 如果用户访问/logout, 循环删除多个房间内的同一个用户
     # 否则只是用户关闭了浏览器标签, 删除对应房间的用户
     if not room_id:
         userlist_all = userlist_prefix + room_prefix + "[0-9]*"
         keys = c.keys(userlist_all)
         for key in keys:
             if c.sismember(key, user):
                 c.srem(key, user)
     else:
         cls = UserManager
         # 首先从删除某个房间内的用户
         userlist_set = userlist_prefix + room_prefix + str(room_id)
         c.srem(userlist_set, user)
         # 再判断此用户是否还在别的房间,如果不是则删除用户
         # 删除用户已改为设置用户离线标志
         cls.userinfo_del(user)
示例#11
0
 def magic_2_normal(magic_id):
     room_keys = c.keys(room_prefix + "[0-9]*")
     for room in room_keys:
         if c.hget(room, "room_magic_id") == magic_id:
             return int(c.hget(room, "room_id"))
示例#12
0
 def magic_2_normal(magic_id):
     room_keys = c.keys(room_prefix + "[0-9]*")
     for room in room_keys:
         if c.hget(room, "room_magic_id") == magic_id:
             return int(c.hget(room, "room_id"))