websocket 群聊

前提关闭防火墙

写入代码

from flask import Flask,request,render_template

from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
from geventwebsocket.websocket import WebSocket app = Flask(__name__)
user_socket_list=[] @app.route("/conn_ws")
def ws_app():
# print(request.environ)
"""
wsgi.websocket:<geventwebsocket.websocket.WebSocket object at 0x0000000003Bc8528>
:return:
"""
user_socket = request.environ.get("wsgi.websocket")
user_socket_list.append(user_socket)
while True: msg =user_socket.receive()
print(msg)
for usocket in user_socket_list:
usocket.send(msg)
#user_socket.send(msg) #1 已经开启的websocket连接
#3 开启了websocket连接 然后 断开了 # return "123"
@app.route("/")
def index():
return render_template("my_ws.html") if __name__ =="__main__":
http_serv = WSGIServer(("0.0.0.0",9527),app,handler_class=WebSocketHandler)
http_serv.serve_forever()

ws_serv

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<input type="text" id="send_str">
<button id="send_btn" onclick="send()"> 发送消息</button>
<p>
<div id="chat_list"> </div>
</p>
</body>
<script type="application/javascript">
var ws=new WebSocket("ws://192.168.11.78:9527/conn_ws"); // 自己的ip地址,页面才往自己页面显示内容
ws.onmessage =function (messageEvent) {
console.log(messageEvent.data);
var ptag = document.createElement("p");
ptag.innerText =messageEvent.data;
document.getElementById("chat_list").appendChild(ptag);
};
function send() {
var send_str = document.getElementById("send_str").value;
ws.send(send_str);
} </script> </html>

my_ws.html

这样就可以群聊了

最新文章

  1. 项目积累html标签
  2. Linux From Scratch - Version 7.7-systemd (中文)
  3. 群晖SVN Server远程访问
  4. 模板volist自增变量
  5. MYSQL-用户权限的验证过程
  6. Project Facets中Dynamic Web Module无法设置2.5的解决方法
  7. WEB前端介绍
  8. 实例学习Bloom Filter
  9. iOS 沙盒目录结构介绍
  10. java 图片压缩 剪切 水印 转换 黑白 缩放
  11. 单个ViewController支持横屏,其他全竖屏方法-b
  12. SQL Server 2005无日志文件附加数据库
  13. Redis集合相关命令
  14. MVP框架 – Ted Mosby的软件架构
  15. Redis学习笔记~Twenproxy所起到的作用
  16. why microsoft named their cloud service Azure?
  17. C++程序设计方法2:基本语法2
  18. Python基础-python数据类型(四)
  19. cordova打包vue2(webpack)android、ios app
  20. MySQL中视图

热门文章

  1. python基础--模块的查找顺序以及相对导入和绝对导入
  2. spring源码学习之默认标签的解析(一)
  3. web前端学习(四)JavaScript学习笔记部分(3)-- JavaScript函数+异常处理+事件处理
  4. loadrunner录制脚本时登录密码转md5
  5. Android 程序员不得不收藏的个人博客(持续更新...)
  6. SpringMVC截图版
  7. 【转】基于OLSR路由协议实现Ad-Hoc组网
  8. CentOS 上MySQL报错Can&#39;t connect to local Mysql server through socket &#39;/tmp/mysql.scok&#39; (111)
  9. Linux 内存管理之mmap详解
  10. 【JZOJ4803】【NOIP2016提高A组模拟9.28】求导