flask web——实时通讯、聊天服务项目、推送通知功能的实现

本文介绍了如何在Flask Web应用中实现聊天服务和在线消息推送。首先,通过创建server.py和main.py文件设置聊天服务,并使用firecamp.app进行测试。接着,详细讲解了在线消息推送的需求,包括用户关注后的消息推送,采用Socket.IO和消息队列(如Redis或RabbitMQ)。在服务端,验证JWT token并根据用户ID将客户端加入房间,以便按需推送。最后,展示了在Flask视图中发布推送事件的方法。
摘要由CSDN通过智能技术生成
一、聊天服务实现

在toutiao-backend/im目录中创建server.py

import socketio

# 创建sio对象
sio = socketio.Server(async_mode='eventlet')
app = socketio.Middleware(sio)

在toutiao-backend/im目录中创建im服务启动程序main.py

运行方式python main.py [端口],如python main.py 8000

import eventlet
eventlet.monkey_patch()

import eventlet.wsgi
import sys


# 通过sys模块 获取启动命令中的参数  sys.argv
# # python main.py 8001 ...
# sys.argv -> ['main.py', '8001', ...]
# 获取命令行参数,目的是想让im服务运行的端口在启动程序时指定
if len(sys.argv) < 2:
	 # 表示启动时忘了传递端口号参数
    print('Usage: python main.py [port]')
    exit(1)		 # 表示程序异常退出

port = int(sys.argv[1])

# 通过导入事件处理模块的方法,让主程序知道事件处理方法的存在
from server import app
import notify

# socketio服务器运行的地址
SERVER_ADDRESS = ('', port)

# 创建协程服务器 并启动
# SERVER_ADDRESS = ('', 8000)

# 需求 想要将端口不写死在程序代码中,想要在启动的时候执行端口号
# python server.py [port]
# python server.py 8001
# 启动socketio服务器
sock = eventlet.listen(SERVER_ADDRESS)
eventlet.wsgi.server(sock, app)

在toutiao-backend/im目录中创建chat.py

from server import sio
import time


# 跟客户端的约定,
# 对于聊天场景,通讯时使用message事件
# 在聊天的通讯中,传输的聊天数据约定格式
# {
   
#     "msg": "",
#     "timestamp": 发送或接受消息的时间戳
# }



@sio.on('connect')
def on_connect(sid, environ):
    """
    与客户端建立好连接后被执行
    """
    print('sid={}'.format(sid))
    print(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值