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)
def get_room_user(room_id): roomuser_key = userlist_prefix + room_prefix + str(room_id) room_users = c.smembers(roomuser_key) user_list = list() for user in room_users: temp = dict() temp['user'] = user temp['remote_ip'] = c.hget(user, "remote_ip") user_list.append(temp) return user_list
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
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")
def get_users_for_room_id(room_id): userlist_set = userlist_prefix + room_prefix + str(room_id) return c.smembers(userlist_set)