当前位置: 首页 > news >正文

聊天系统登录后端实现

定义返回的数据格式
在这里插入图片描述

# Restful API
from flask import jsonifyclass HttpCode(object):# 响应正常ok = 200# 没有登陆错误unloginerror = 401# 没有权限错误permissionerror = 403# 客户端参数错误paramserror = 400# 服务器错误servererror = 500def _restful_result(code, message, data):return ({"message": message or "", "data": data or {}, "code": code})def ok(message=None, data=None):return _restful_result(code=HttpCode.ok, message=message, data=data)def unlogin_error(message="没有登录!"):return _restful_result(code=HttpCode.unloginerror, message=message, data=None)def permission_error(message="没有权限访问!"):return _restful_result(code=HttpCode.paramserror, message=message, data=None)def params_error(message="参数错误!"):return _restful_result(code=HttpCode.paramserror, message=message, data=None)def server_error(message="服务器开小差啦!"):return _restful_result(code=HttpCode.servererror, message=message or '服务器内部错误', data=None)

默认头像
存储头像的文件
在这里插入图片描述

pip install flask-avatars 

app.py

avatars = Avatars(app)

在这里插入图片描述

socket 跨域解决
socketio = SocketIO(app, cors_allowed_origins="*")

说明:这里做成轻量级的,数据不存储在数据库中,存储在内存中

后端 登录完整代码

from flask import Flask, request, send_from_directory, url_forfrom flask_socketio import SocketIO
from flask_avatars import Avatars, Identicon
from utils import restful
from hashlib import md5
import osBASE_DIR = os.path.dirname(__file__)app = Flask(__name__)
app.config['AVATARS_SAVE_PATH'] = os.path.join(BASE_DIR, "media", "avatars")
socketio = SocketIO(app, cors_allowed_origins="*")
avatars = Avatars(app)# 全局变量,用来存储用户信息
online_users = []@app.route('/meadia/avatars/<path:filename>')
def get_avatar(filename):return send_from_directory(app.config['AVATARS_SAVE_PATH'], filename)@socketio.on('connect')
def connect():print('ip:' + request.remote_addr)print('sid:' + request.sid)@socketio.on('login')
def login(data):username = data.get('username')if not username:return restful.params_error("请传入用户名")for user in online_users:if user['username'] == username:return restful.params_error("此用户名已存在")filenames = Identicon().generate(md5(username.encode("utf-8")).hexdigest())# 获取大头像avatar_name = filenames[2]# 获取头像路径# "/media/avatars/"+avatar_nameavatar_url = url_for("get_avatar", filename=avatar_name)user = {"username": username,"ip": request.remote_addr,'avatar': avatar_url,"sid": request.sid}online_users.append(user)return restful.ok(data=user)if __name__ == '__main__':socketio.run(app)

在这里插入图片描述

相关文章:

聊天系统登录后端实现

定义返回的数据格式 # Restful API from flask import jsonifyclass HttpCode(object):# 响应正常ok 200# 没有登陆错误unloginerror 401# 没有权限错误permissionerror 403# 客户端参数错误paramserror 400# 服务器错误servererror 500def _restful_result(code, messa…...

Ajax笔记_01(知识点、包含代码和详细解析)

Ajax_01笔记 前置知识点 在JavaScript中 问题1&#xff1a;将数组转为字符串&#xff0c;以及字符串转为数组的方式。 问题2、将对象转为字符串&#xff0c;以及字符串转为对象的方法。 方法&#xff1a; 问题1&#xff1a; 将数组转为字符串可以使用 join() 方法。例如&…...

Eureka 学习笔记2:EurekaClient

版本 awsVersion ‘1.11.277’ EurekaClient 接口实现了 LookupService 接口&#xff0c;拥有唯一的实现类 DiscoveryClient 类。 LookupService 接口提供以下功能&#xff1a; 获取注册表根据应用名称获取应用根据实例 id 获取实例信息 public interface LookupService<…...

Spring引入并启用log4j日志框架-----Spring框架

<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://ma…...

Redis实现延时队列

缓存队列延时向接口报工&#xff0c;并支持多实例部署。 引入依赖 <dependency><groupId>org.redisson</groupId><artifactId>redisson-spring-data</artifactId><version>3.17.4</version> </dependency> 注入RedisClient …...

无限遍历,Python实现在多维嵌套字典、列表、元组的JSON中获取数据

目录 背景 思路 新建两个函数A和B&#xff0c;函数 A处理字典数据&#xff0c;被调用后&#xff0c;判断传递的参数&#xff0c;如果参数为字典&#xff0c;则调用自身&#xff1b; 如果是列表或者元组&#xff0c;则调用列表处理函数B&#xff1b; 函数 B处理列表&#x…...

信息学奥赛一本通——1180:分数线划定

文章目录 题目【题目描述】【输入】【输出】【输入样例】【输出样例】【提示】 AC代码 题目 【题目描述】 世博会志愿者的选拔工作正在 A 市如火如荼的进行。为了选拔最合适的人才&#xff0c;A市对所有报名的选手进行了笔试&#xff0c;笔试分数达到面试分数线的选手方可进入…...

SpringApplication对象的构建及spring.factories的加载时机

构建SpringApplication对象源码: 1、调用启动类的main()方法,该方法中调用SpringApplication的run方法。 SpringBootApplication public class SpringbootdemoApplication {public static void main(String[] args) {SpringApplication.run(SpringbootdemoApplication.class, …...

基于传统检测算法hog+svm实现图像多分类

直接上效果图&#xff1a; 代码仓库和视频演示b站视频005期&#xff1a; 到此一游7758258的个人空间-到此一游7758258个人主页-哔哩哔哩视频 代码展示&#xff1a; 数据集在datasets文件夹下 运行01train.py即可训练 训练结束后会保存模型在本地 运行02pyqt.py会有一个可视化…...

slice() 方法,使用 concat() 方法, [...originalArray],find(filter),移出类名 removeAttr()

在JavaScript中&#xff0c;在 JavaScript 中&#xff0c;clone 不是一个原生的数组方法。但是你可以使用其他方法来实现克隆数组的功能。 以下是几种常见的克隆数组的方法&#xff1a; 使用 slice() 方法&#xff1a; const originalArray [1, 2, 3]; const clonedArray …...

Zabbix报警机制、配置钉钉机器人、自动发现、主动监控概述、配置主动监控、zabbix拓扑图、nginx监控实例

day02 day02配置告警用户数超过50&#xff0c;发送告警邮件实施验证告警配置配置钉钉机器人告警创建钉钉机器人编写脚本并测试添加报警媒介类型为用户添加报警媒介创建触发器创建动作验证自动发现配置自动发现主动监控配置web2使用主动监控修改配置文件&#xff0c;只使用主动…...

ELK日志分析系统概述及部署

ELK 平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kibana 三个开源工具配合使用&#xff0c;完成更强大的用户对日志的查询、排序、统计需求。 一、ELK概述 1、组件说明 ①ElasticSearch ElasticSearch是基于Lucene&#xff08;一个全文…...

HTML拖拽

拖拽的流程&#xff1a;鼠标按下(mousedown)→鼠标移动(mousemove)→鼠标松开(moveup) 需要理解的几个api&#xff1a; clientX/clientY: 相对于浏览器视窗内的位置坐标&#xff08;不包括浏览器收藏夹和顶部网址部分&#xff09;pageX/pageY: 该属性会考虑滚动&#xff0c;如…...

【vue】 vue2 监听滚动条滚动事件

代码 直接上代码&#xff0c;vue单文件 index.vue <template><div class"content" scroll"onScroll"><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容</p><p>内容…...

k8s目录

k8s笔记目录&#xff0c;更新中... 一 概念篇 1.1概念介绍 1.2 pod 1.3 controller 1.3.1 deployment 1.3.2 statefulset 1.3.3 daemonset 1.3.4 job和cronJob1 1.4 serivce和ingress 1.5 配置与存储 1.5.1 configMap 1.5.2 secret 1.5.3 持久化存储 1.5.4 pv和…...

设计模式行为型——解释器模式

目录 什么是解释器模式 解释器模式的实现 解释器模式角色 解释器模式类图 解释器模式举例 解释器模式代码实现 解释器模式的特点 优点 缺点 使用场景 注意事项 实际应用 什么是解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;属于行为型模式&…...

使用 Webpack 优化前端开发流程

在现代前端开发中&#xff0c;构建工具的选择和优化流程的设计至关重要。Webpack 是一个功能强大的前端构建工具&#xff0c;能够优化我们的开发流程&#xff0c;提高开发效率和项目性能。本文将介绍如何使用 Webpack 来优化前端开发流程。 代码优化和资源管理也是前端项目中不…...

mysql的分库分表脚本

目录 一.分库分表优点二.过程思路脚本实现验证 一.分库分表优点 1&#xff0c;提高系统的可扩展性和性能&#xff1a;通过分库分表&#xff0c;可以将数据分布在多个节点上&#xff0c;从而提高系统的负载能力和处理性能。 2&#xff0c;精确备份和恢复&#xff1a;分库分表备…...

JavaEE初阶之文件操作 —— IO

目录 一、认识文件 1.1认识文件 1.2树型结构组织 和 目录 1.3文件路径(Path) 1.4其他知识 二、Java 中操作文件 2.1File 概述 2.2代码示例 三、文件内容的读写 —— 数据流 3.1InputStream 概述 ​3.2FileInputStream 概述 3.3代码示例 3.4利用 Scanner 进行字…...

客户端代码 VS 服务端代码 简述

客户端代码和服务端代码是计算机网络交互中的两种重要代码类型。在计算机网络中&#xff0c;客户端和服务器是一对设备模型&#xff0c;客户端&#xff08;Client&#xff09;负责向服务器发送请求&#xff0c;服务器&#xff08;Server&#xff09;负责处理请求并返回给客户端…...

OpenClaw跨平台实战:千问3.5-9B在mac与Windows的自动化对比

OpenClaw跨平台实战&#xff1a;千问3.5-9B在mac与Windows的自动化对比 1. 为什么需要跨平台对比 去年我在团队内部推广自动化工具时&#xff0c;遇到一个典型问题&#xff1a;同事们的开发环境分散在macOS和Windows两大平台。当我们尝试用OpenClaw千问3.5-9B构建统一自动化流…...

三菱现代自动擦窗机器人PLC软件:后发产品介绍及技术细节

三菱 现代自动擦窗机器人PLC软件 我们主要的后发送的产品有&#xff0c;带解释的梯形图接线图原理图图纸&#xff0c;io分配&#xff0c;组态画面 界面多种组态可供选择上周刚帮一个三菱现代贴牌擦窗机的小客户把新软件迭代完&#xff0c;顺便攒了一套带人话解释的梯形图、不…...

【网络层-IP数据报】

网络层-IP数据报一、概念二、内容三、分片一、概念 1.IP 属于网络层协议&#xff0c;提供不可靠、无连接的数据包交付服务&#xff0c;核心单元就是 IP 数据报。 2.无连接&#xff1a;每个数据报独立路由&#xff0c;走不同路径也可以。 3.不可靠&#xff1a;不保证一定送达、…...

OpenClaw小团队协作:千问3.5-35B-A3B-FP8共享技能库搭建

OpenClaw小团队协作&#xff1a;千问3.5-35B-A3B-FP8共享技能库搭建 1. 为什么我们需要共享技能库 去年冬天&#xff0c;我们团队在尝试用OpenClaw自动化周报生成时遇到了一个典型问题——每个人都在重复造轮子。小王写了个飞书日程抓取脚本&#xff0c;小李开发了Git提交记录…...

新手福音:在快马平台用自然语言生成你的第一个powershell脚本

今天想和大家分享一个特别适合 PowerShell 新手的入门实践。作为一个从零开始学习 PowerShell 的菜鸟&#xff0c;我发现用自然语言描述需求就能生成可运行的脚本&#xff0c;这个体验真的太友好了。 变量定义与数据结构 刚开始学习时&#xff0c;最基础的就是理解变量和数据结…...

合肥艺星12周年超级盛典 以“独1无2”之名,立品质医美新坐标

2026年4月1日,合肥艺星12周年超级盛典正式启幕。十二年,不只是时间的沉淀,更是品牌在品质、技术、服务、标准、态度、团队、城市责任与星品矩阵八大维度上,构建完整“坐标系”的高光时刻。合肥艺星以“独1无2”之姿,向安徽乃至全国医美行业定义出一份关于“独一”的答卷。独1无…...

突破百度网盘下载限速:BaiduPCS-Go命令行客户端的3大技术突破

突破百度网盘下载限速&#xff1a;BaiduPCS-Go命令行客户端的3大技术突破 【免费下载链接】BaiduPCS-Go iikira/BaiduPCS-Go原版基础上集成了分享链接/秒传链接转存功能 项目地址: https://gitcode.com/GitHub_Trending/ba/BaiduPCS-Go 你是否厌倦了百度网盘的龟速下载&…...

IP-Adapter-FaceID在社交媒体中的应用:内容创作与分享

IP-Adapter-FaceID在社交媒体中的应用&#xff1a;内容创作与分享 【免费下载链接】IP-Adapter-FaceID 项目地址: https://ai.gitcode.com/hf_mirrors/h94/IP-Adapter-FaceID IP-Adapter-FaceID是一款基于Stable Diffusion的AI人脸生成工具&#xff0c;它通过面部识别模…...

实战指南:基于快马平台生成git自动化部署脚本,实现ci/cd流水线

今天想和大家分享一个实战中特别实用的技巧&#xff1a;如何用git结合自动化脚本来简化版本发布和部署流程。这个方案在我们团队的实际项目中已经稳定运行了大半年&#xff0c;效果非常不错。 版本号自动打tag功能 这个脚本的核心功能之一就是自动读取项目中的版本号文件&…...

多场景适配:ClearerVoice-Studio支持16K/48K采样率,会议直播都适用

多场景适配&#xff1a;ClearerVoice-Studio支持16K/48K采样率&#xff0c;会议直播都适用 1. 为什么音频采样率如此重要&#xff1f; 在语音处理领域&#xff0c;采样率选择直接影响最终效果。就像相机像素决定照片清晰度一样&#xff0c;音频采样率决定了声音的"分辨率…...