环境需求:flask,websocket第三方包
目录结构
web中实现群聊
ws_群聊.py文件
# 实现一个websocket 先下载包 gevent-websocket from flask import Flask, request, render_template from geventwebsocket.handler import WebSocketHandler from geventwebsocket.websocket import WebSocket # 语法提示作用 from gevent.pywsgi import WSGIServer import json app = Flask(__name__) user_socket_dict = {} # 定义一字典 user_id:链接 @app.route('/ws/<user>') def ws(user): # print(request.environ) user_socket = request.environ.get("wsgi.websocket") # type:WebSocket if user_socket: # 当用户连接时候 user_socket_dict[user] = user_socket # 添加到用户列表 print(len(user_socket_dict), user_socket_dict) while 1: msg = user_socket.receive() # 接受消息 print(msg) # 页面传过来的数据 b"{from_user:jinwangba ,to_user:yinwangba,msg:"doushidawangba"}" msg_dict = json.loads(msg) to_user_socket = user_socket_dict.get(msg_dict.get("to_user")) to_user_socket.send(json.dumps( {"from_user": user, "to_user": msg_dict.get("to_user"), "msg": msg_dict.get("msg" )})) @app.route('/') def index(): return render_template("ws单聊.html") if __name__ == '__main__': print('服务已启动') # app.run("0.0.0.0", 5000, debug=True) http_serv = WSGIServer(("0.0.0.0", 8080), app, handler_class=WebSocketHandler) http_serv.serve_forever() # 永久启动