教程 Redis+ flask+vue 在線聊天

知識點

基於 Server-Sent Event 工作方式,Web 即時通信Redis 包 發佈訂閱功能的使用flask 快速入門,常用對象實例方法函數Vuejs 列表頁面自動渲染

效果圖

代碼段

app.py 主文件

import datetime
from flask import Flask, session, redirect, Response, request, render_template, url_for, flash
from redis import StrictRedis

app = Flask(__name__)

# session cookie密鑰
app.secret_key = 'pardon110'

# 連接redis數據庫,默認是零號庫,可隨便更改
rds = StrictRedis(db=3)

# 消息生成器
def event_stream():
# 從數據庫連接上獲取發佈訂閱管理對象實例
pub = rds.pubsub()
# 在管理訂閱(建立通道)頻道
pub.subscribe('chat')
# 監聽頻道信息
for message in pub.listen():
print(type(message['data']), type(message), message)
# 只響應有消息的(字節),首次無消息返回的為int狀態碼對象,直接忽略
if isinstance(message['data'], bytes):
# 轉為utf8字符串,發送 SSE(Server Send Event)協議格式的數據
yield 'data: %s\\n\\n' % message['data'].decode()

# 首次訪問需要登錄
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['user']
# 重定向到home處理器
flash('您已經成功登錄!')
return redirect(url_for('home'))
return '

登錄