WebSocket 实现链接 群聊(low low low 版本)
py 文件:
- """
- 下载 gevent-websocket 0.10.1
- 基于Flask + geventWebSocket 建立连接,发送消息,实现群消息功能.
- """
- from geventwebsocket.server import WSGIServer # 我要WSGI为我提供服务
- from geventwebsocket.handler import WebSocketHandler # WSGI 遇到 WS 协议的时候,用WebSocketHandler处理
- from geventwebsocket.websocket import WebSocket # 语法提示,使用方法:"# type:WebSocket"
- from flask import Flask, request, render_template
- app = Flask(__name__)
- user_socket_list = [] # 存放所有链接到服务器的 socket
- @app.route("/ws")
- def my_websocket_func():
- # 获取到websocket链接.
- user_socket = request.environ.get("wsgi.websocket") # type:WebSocket
- user_socket_list.append(user_socket) # 每个链接上来的socket都存放到 socket列表中一份
- while 1:
- msg = user_socket.receive() # 通过连接等待接收客户端发送过来的消息
- for us in user_socket_list:
- # if us == user_socket: # 当循环到的socket链接是自己的时候
- # continue
- try:
- us.send(msg) # 把接收到的数据在发送回去
- except:
- continue
- @app.route("/group_p")
- def group_p():
- return render_template("my_ws_mp.html")
- if __name__ == '__main__':
- http_server = WSGIServer(("0.0.0.0", 9527), application=app, handler_class=WebSocketHandler)
- http_server.serve_forever()
html 文件:
- <!DOCTYPE html>
- <html lang="zh-CN">
- <head>
- <meta http-equiv="content-Type" charset="UTF-8">
- <meta http-equiv="x-ua-compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1">
- <title>群聊</title>
- </head>
- <body>
- <p>发送消息: <input type="text" id="message">
- <button onclick="send_msg()">发送</button>
- </p>
- <div id="message_list" style="width: 800px">
- </div>
- <script>
- var ws = new WebSocket("ws://127.0.0.1:9527/ws");
- // 定义一个变量 ws,
- // new一个 WebSocket 对象,
- // 来发送 ws 协议请求 "ws://127.0.0.1:9527/ws"
- // 当 ws 收到消息时执行 onmessage
- // 触发 收到消息 用 onmessage
- ws.onmessage = function (event) {
- console.log(event.data);
- var ptag = document.createElement("p"); // 创建一个p标签
- ptag.innerText = event.data; // p标签中的内容是 event.data
- var divtag = document.getElementById("message_list"); // 找到 message_list 的 div标签
- divtag.appendChild(ptag); // 把创建的p标签连同内容一起放到 这个 div 中
- };
- function send_msg() {
- var msg = document.getElementById("message").value;
- // 当点击"发送"按钮的时候,拿到要发送的内容
- ws.send(msg);
- // 发送出去
- }
- </script>
- </body>
- </html>
WebSocket 实现链接 群聊(low low low 版本)的更多相关文章
- 【Java分享客栈】SpringBoot整合WebSocket+Stomp搭建群聊项目
前言 前两周经常有大学生小伙伴私信给我,问我可否有偿提供毕设帮助,我说暂时没有这个打算,因为工作实在太忙,现阶段无法投入到这样的领域内,其中有两个小伙伴又问到我websocket该怎么使用,想给自己的 ...
- websocket学习和群聊实现
WebSocket协议可以实现前后端全双工通信,从而取代浪费资源的长轮询.在此协议的基础上,可以实现前后端数据.多端数据,真正的实时响应.在学习WebSocket的过程中,实现了一个简化版群聊,过程和 ...
- 基于websocket搭建简易群聊
1.前端HTML <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset=&qu ...
- Flask 实现 WebSocket 通讯---群聊和私聊
一.WebSocket介绍 WebSocket是一种在单个TCP连接实现了服务端和客户端进行双向文本或二进制数据通信的一种通信的协议. WebSocket使得客户端和服务器之间的数据交换变得更加简单, ...
- websocket实现群聊
server # @File: 群聊 from flask import Flask, render_template, request from geventwebsocket.handler im ...
- 一例完整的websocket实现群聊demo
前言 业余我都会花一些时间在tcp.http和websocket等领域的学习,现在觉得有点收获,所以把一个基于websocket的群聊功能的例子提供给大家玩玩.当然这是一个很完整的例子,包括webso ...
- websocket(二)--简单实现网页版群聊
websocket可以实现服务端的消息推送,而不必在客户端轮询,大大的节省的资源,对于实时通讯来说简直是个大喜讯. 在上一篇文章中介绍了协议握手,这篇文章将通过实现简单的群聊来帮助进一步了解webso ...
- WebSocket群聊与单聊
一 . WebSocket实现群聊 py文件代码 # py文件 from flask import Flask, render_template, request from geventwebsock ...
- WebSocket刨根问底(三)之群聊
前两篇文章[WebSocket刨根问底(一)][WebSocket刨根问底(二)]我们介绍了WebSocket的一些基本理论,以及一个简单的案例,那么今天继续,我们来看一个简单的群聊的案例,来进一步了 ...
随机推荐
- hdfs知识点《转》
HDFS知识点总结 学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点. 1.HDFS的设计 HDFS是什么:HDFS即Hadoop分布式文件系统(Hadoop Dist ...
- Python全栈开发记录_第七篇(模块_time_datetime_random_os_sys_hashlib_logging_configparser_re)
这一篇主要是学习python里面的模块,篇幅可能会比较长 模块的概念:在Python中,一个.py文件就称之为一个模块(Module). 模块一共三种: python标准库 第三方模块 应用程序自定义 ...
- eclipse详细安装教程与环境变量设置
地址:https://blog.csdn.net/q651742112/article/details/73477400 源地址:https://www.cnblogs.com/yeminglong/ ...
- SAP S/4 HANA 1709 Fully Activated Appliance
SAP S4HANA 1709 Fully Activated Appliance:简单来说比IDES版本功能更加强大,内置三个集团,分别用于测试不同业务.内置官方的BP内容 安装需要500G SSD ...
- ADB抓取内存命令
1. 在IDE中查看Log信息当程序运行垃圾回收的时候,会打印一条Log信息,其格式如下:D/dalvikvm: <GC_Reason> <Amount_freed>, < ...
- as3 加载进来的swf进行缩放
private function swfComHdl(_loader:Loader, _data:*= null){ frameLder = _loader; gameMC = frameLder.c ...
- python3编码
一.字符编码 1.什么实字符编码:将人识别的字符转换成计算机能识别的01,而转换的过程或者规则就是字符编码表. 而这种字符编码表表示了一种对应关系. 2.常用的字符编码表有:ascii.unicode ...
- Spark环境搭建
转载:https://blog.csdn.net/songhaifengshuaige/article/details/79480491
- [phvia/dkc] Docker Compose 快速构建(LNMP+Node)运行环境
快速构建(LNMP+Node)运行环境. dkc 在此作为 docker-compose 的缩写,你可以理解为 alias dkc=docker-compose 准备 安装 docker 选择1) 从 ...
- Task的在主线程处理异常信息的Helper类
最近使用task时候需要把异常记录日志,直接注入非单例模式的实例进入异步线程,在高并发情况下会出现一些问题. 所以需要把异常反馈给主线程 ,并且不在主线程里进行等待,研究相关资料后,自己写了一个简单的 ...