美文网首页
设计一个聊天在线服务

设计一个聊天在线服务

作者: MontyOak | 来源:发表于2018-07-28 20:36 被阅读9次

原文链接

作为演示代码,做了以下的简化处理:

  • 仅支持文本
  • 用户接口:注册用户,注销用户,更新用户信息,添加用户好友关系,删除好友关系
  • 聊天接口:支持群聊和一对一聊天
from abc import ABCMeta


class UserService(object):

    def __init__(self):
        self.users_by_id = {}  # key: user id, value: User

    def add_user(self, user_id, name, pass_hash):  # ...
    def remove_user(self, user_id):  # ...
    def add_friend_request(self, from_user_id, to_user_id):  # ...
    def approve_friend_request(self, from_user_id, to_user_id):  # ...
    def reject_friend_request(self, from_user_id, to_user_id):  # ...


class User(object):

    def __init__(self, user_id, name, pass_hash):
        self.user_id = user_id
        self.name = name
        self.pass_hash = pass_hash
        self.friends_by_id = {}  # key: friend id, value: User
        self.friend_ids_to_private_chats = {}  # key: friend id, value: private chats
        self.group_chats_by_id = {}  # key: chat id, value: GroupChat
        self.received_friend_requests_by_friend_id = {}  # key: friend id, value: AddRequest
        self.sent_friend_requests_by_friend_id = {}  # key: friend id, value: AddRequest

    def message_user(self, friend_id, message):  # ...
    def message_group(self, group_id, message):  # ...
    def send_friend_request(self, friend_id):  # ...
    def receive_friend_request(self, friend_id):  # ...
    def approve_friend_request(self, friend_id):  # ...
    def reject_friend_request(self, friend_id):  # ...


class Chat(metaclass=ABCMeta):

    def __init__(self, chat_id):
        self.chat_id = chat_id
        self.users = []
        self.messages = []


class PrivateChat(Chat):

    def __init__(self, first_user, second_user):
        super(PrivateChat, self).__init__()
        self.users.append(first_user)
        self.users.append(second_user)


class GroupChat(Chat):

    def add_user(self, user):  # ...
    def remove_user(self, user):  # ... 


class Message(object):

    def __init__(self, message_id, message, timestamp):
        self.message_id = message_id
        self.message = message
        self.timestamp = timestamp


class AddRequest(object):

    def __init__(self, from_user_id, to_user_id, request_status, timestamp):
        self.from_user_id = from_user_id
        self.to_user_id = to_user_id
        self.request_status = request_status
        self.timestamp = timestamp


class RequestStatus(Enum):

    UNREAD = 0
    READ = 1
    ACCEPTED = 2
    REJECTED = 3

相关文章

  • 设计一个聊天在线服务

    原文链接 作为演示代码,做了以下的简化处理: 仅支持文本 用户接口:注册用户,注销用户,更新用户信息,添加用户好友...

  • 9个诀窍提升企业在线客服能力

    内容摘要: 1.客服人员应该学习的9个小窍门 2.改善在线聊天,提升服务质量 想改善你的在线聊天技能吗?快看这里!...

  • python后端架构

    最近在做一个在线平台,架构思路如下 架构演进:1、MVC 2、服务拆分 3、微服务架构 4、领域驱动设计 1、MV...

  • 在线聊天

    二个朋友,在线聊天,你一句,我一句,东一句,西一句,想说啥说啥,不担心这个不担心那个。

  • 在线直播聊天室设计思路

    APP接口设计思路 一、创建用户对象接口(此接口用于经常性更新): 1.用户名称(用户昵称) 2.用户设备ID码 ...

  • 系统需求

    1、服务要求 7*24小时在线服务 技术指导能力 2、框架要求 可扩展性:采用微服务架构,采取模块设计结构,具备足...

  • 开发一个在线聊天

    在线聊天技术选型 在线聊天因为涉及到互相通信,所以采用socket.io 前端框架 vue2 打包工具 vite ...

  • 在线聊天技术选型

    聊天技术哪家强 实现原理层面大概有以下几种轮询,常轮询,异步,长连接,新协议。 在线聊天技术与普通cs服务的区别 ...

  • 使用 Python 的 Tkinter模块 开发 IRC 客户端

    前段时间尝试用 Python 做了一个在线多聊天室的服务器程序,通过 shell 登陆。开发环境:MAC OS 1...

  • Spring MVC实现Spring Security,Spri

    使用Spring框架各个组件实现一个在线聊天网页,当有用户连接WebSocket,服务器监听到用户连接会使用Sto...

网友评论

      本文标题:设计一个聊天在线服务

      本文链接:https://www.haomeiwen.com/subject/rslamftx.html