# im **Repository Path**: hzzjl/im ## Basic Information - **Project Name**: im - **Description**: No description available - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-07-18 - **Last Updated**: 2025-07-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # IM - 即时通讯系统 这是一个基于FastAPI和Celery的即时通讯系统,支持SSE(服务器发送事件)和WebSocket连接。 ## 功能特性 - 实时消息推送 - 支持SSE和WebSocket连接 - 消息队列处理 - 连接池管理 - Celery异步任务处理 ## 技术栈 - FastAPI - 用于构建API - Celery - 异步任务队列 - Redis - 消息代理和结果后端 - SSE/WebSocket - 实时通信协议 ## 安装 ```bash pip install -r requirements.txt ``` ## 启动服务 ```bash uvicorn application.main:app --host 0.0.0.0 --port 8000 ``` 或者 ```bash python -m application.main ``` ## Celery任务 系统包含以下Celery任务: 1. `send_message_task` - 向指定用户发送私信 2. `broadcast_message_task` - 向所有连接的用户广播消息 ### 调用示例 #### 1. Python代码中直接调用 ```python from application.tasks.tasks import send_message_task, broadcast_message_task # 异步调用(推荐) result = send_message_task.delay("user123", {"event": "message", "data": {"text": "Hello"}}) task_result = result.get(timeout=10) # 同步调用 task_result = send_message_task("user123", {"event": "message", "data": {"text": "Hello"}}) ``` #### 2. 通过API调用 ```bash # 发送私信 curl -X POST "http://localhost:8000/tasks/send-private-message" \ -H "Content-Type: application/json" \ -d '{"user_id": "user123", "message": {"event": "message", "data": {"text": "Hello"}}}' # 广播消息 curl -X POST "http://localhost:8000/tasks/broadcast-message" \ -H "Content-Type: application/json" \ -d '{"message": {"event": "broadcast", "data": {"text": "Hello everyone"}}}' ``` ## API接口 - `/sse/{user_id}` - SSE连接端点 - `/private` - 发送私信端点 - `/stats` - 查看连接统计信息 ## 项目结构 ``` application/ ├── main.py # 应用入口 ├── celery_app.py # Celery配置 ├── conn/ # 连接池管理 ├── logger/ # 日志管理 ├── middleware/ # 中间件 ├── routers/ # 路由 ├── static/ # 静态资源 └── tasks/ # Celery任务 ├── tasks.py # 任务定义 └── example_usage.py # 使用示例 ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)