server

# @File: 群聊
from flask import Flask, render_template, request
from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
from geventwebsocket.websocket import WebSocket app = Flask(__name__)
user_socket_list = [] @app.route('/ws')
def ws():
# 一个用户的长链接wsgi.websocket
user_socket = request.environ.get("wsgi.websocket") # type:WebSocket
if user_socket:
# 将每个链接存入列表中
user_socket_list.append(user_socket)
print(len(user_socket_list), user_socket_list)
while 1:
msg = user_socket.receive()
print(msg)
for usocket in user_socket_list:
if user_socket == usocket:
continue
try:
usocket.send(msg)
except:
continue @app.route('/')
def index():
return render_template("many_person.html") if __name__ == '__main__':
http_server = WSGIServer(("0.0.0.0", 7000), app, handler_class=WebSocketHandler)
http_server.serve_forever()
many_person.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body> <p>发送内容:<input type="text" id="message"><button onclick="send_msg()">发送</button></p>
<div id="msg_list" style="width: 500px"> </div> </body>
<script type="application/javascript"> var ws = new WebSocket("ws://192.168.12.41:7000/ws");
ws.onmessage = function (ws_status) {
console.log(ws_status.data);
var ptag = document.createElement("p");
ptag.innerText = ws_status.data;
document.getElementById("msg_list").appendChild(ptag)
};
function send_msg() {
var msg = document.getElementById("message").value;
var ptag = document.createElement("p");
ptag.style.cssText = "text-align: right";
ptag.innerText = msg;
document.getElementById("msg_list").appendChild(ptag);
ws.send(msg);
}
</script>
</html>

最新文章

  1. 使用ENode框架前您需要了解的东西(初稿)
  2. Spring 文章推荐
  3. Java中的枚举
  4. 记一次VNC远程连接Linux问题解决记录(5900端口测试、KDE桌面安装)
  5. animation of android (1)
  6. Java-基础编程(螺旋矩阵&amp;乘法表)
  7. Git一张图学习
  8. BA - 读书雷达10本必读书
  9. php 这门语言
  10. iOS面试题大全-点亮你iOS技能树
  11. android 自定义控件,自定义属性设置
  12. COM与.NET程序集导出和部署COM组件
  13. LAMP环境的搭建(四)----Apache下部署项目
  14. ajax的四种type类型
  15. PostgreSql扩展Sql-动态加载共享库(C函数)
  16. Hadoop wordcount Demon
  17. 解决Postman User-Agent 设置失效
  18. 2.ECS内 经典网络与VPC网络的区别
  19. &lt;Android 基础(二十一)&gt; Android 屏幕适配
  20. 用户登陆显示cpu、负载、内存信息

热门文章

  1. Centos6-编译安装Redis
  2. Hdu3785
  3. EF(Entity Framework)通用DBHelper通用类,增删改查以及列表
  4. day 18 面向对象的 继承
  5. app上架的照片尺寸大小
  6. jquery1.9是最后支持IE678
  7. 树状数组(二叉索引树 BIT Fenwick树) *【一维基础模板】(查询区间和+修改更新)
  8. UVA10480 Sabotage —— 最小割最大流
  9. “There&#39;s no Qt version assigned to this project for platform ” - visual studio plugin for Qt
  10. js程序开发-1