群聊:
from flask import Flask, render_template, request
from geventwebsocket.handler import WebSocketHandler, WebSocket
from gevent.pywsgi import WSGIServer
app = Flask(__name__)
user_socket_list = []
@app.route("/ws")
def ws():
user_socket = request.environ.get('wsgi.websocket')
if user_socket:
user_socket_list.append(user_socket)
while 1:
msg = user_socket.receive()
for u_socket in user_socket_list:
if u_socket != user_socket:
u_socket.send(msg)
if __name__ == '__main__':
http_server = WSGIServer(("0.0.0.0", 8000), app, handler_class=WebSocketHandler)
http_server.serve_forever()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p id="p_str">fasd</p>
</body>
</html>
<script type="application/javascript">
var ws = new WebSocket("ws://172.20.163.45:8000/ws");
ws.onmessage = function (data) {
p_tag = document.createElement("p");
p_tag.innerText = data.data;
parent_p = document.getElementById("p_str");
parent_p.appendChild(p_tag)
};
</script>
一对一:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" id="username"> <button onclick="login()">登录</button>
<input type="text" id="to_user">
<input type="text" id="msg"> <button onclick="sendMsg()">发送</button>
<div id="p_str">fasd</div>
</body>
</html>
<script type="application/javascript">
var ws = null;
function login() {
var username = document.getElementById("username").value;
ws = new WebSocket("ws://172.20.163.45:8000/ws/" + username);
ws.onmessage = function (data) {
var p_tag = document.createElement("p");
recv_msg = JSON.parse(data.data);
p_tag.innerText = recv_msg.from_user + ":" + recv_msg.msg;
parent_p = document.getElementById("p_str");
parent_p.appendChild(p_tag)
};
}
function sendMsg() {
var to_user = document.getElementById("to_user").value;
var msg = document.getElementById("msg").value;
send_msg = {
"to_user": to_user,
"msg": msg
};
ws.send(JSON.stringify(send_msg))
}
</script>
import json
from flask import Flask, render_template, request
from geventwebsocket.handler import WebSocketHandler, WebSocket
from gevent.pywsgi import WSGIServer
app = Flask(__name__)
user_socket_list = []
user_socket_dict = {
}
@app.route("/ws/<username>")
def ws(username):
user_socket = request.environ.get('wsgi.websocket')
if user_socket:
user_socket_dict[username] = user_socket
while 1:
msg = user_socket.receive()
msg_dict = json.loads(msg)
msg_dict["from_user"] = username
to_user = msg_dict.get("to_user")
usocket = user_socket_dict[to_user]
usocket.send(json.dumps(msg_dict))
if __name__ == '__main__':
http_server = WSGIServer(("0.0.0.0", 8000), app, handler_class=WebSocketHandler)
http_server.serve_forever()
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
· BotSharp + MCP 三步实现智能体开发
· BotSharp 5.0 MCP:迈向更开放的AI Agent框架
· 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
· 【ESP32】两种模拟 USB 鼠标的方法
· 设计模式脉络