在flask上使用websocket
在flask上使用websocket
Flask-Sockets和Flask-SocketIO之间的主要区别在于前者仅仅将WebSocket协议(通过使用gevent-websocket项目)进行包装,因此它只适用于原生支持WebSocket协议的浏览器,对于那些不支持WebSocket协议的较老的浏览器,就无法使用它了。 Flask-SocketIO则不同,通过前面的介绍,读者应该已经知道了它不仅实现了WebSocket协议,并且对于那些不支持WebSocket协议的旧版浏览器,使用它也能够实现相同的效果。新版旧版的浏览器都能使用他
另一个区别是Flask-SocketIO实现了SocketIO Javascript库公开的消息传递协议。 Flask-Sockets只是实现通信通道,发送的是完全取决于应用程序。
Flask-SocketIO还为事件处理程序创建了一个类似flask的常规视图函数的环境,包括创建应用程序和请求上下文。 然而,在文档中会介绍一些重要的例外情形。
Flask-SocketIO服务器端程序
如下是一个使用了Flask-SocketIO的Flask应用程序。
from flask import Flask, render_template from flask_socketio import SocketIO, emitapp = Flask(__name__) app.config['SECRET_KEY'] = 'secret!' socketio = SocketIO(app)@app.route('/') def index():return render_template('index.html')@socketio.on('my event', namespace='/test') def test_message(message):emit('my response', {'data': message['data']})@socketio.on('my broadcast event', namespace='/test') def test_message(message):emit('my response', {'data': message['data']}, broadcast=True)@socketio.on('connect', namespace='/test') def test_connect():emit('my response', {'data': 'Connected'})@socketio.on('disconnect', namespace='/test') def test_disconnect():print('Client disconnected')if __name__ == '__main__':socketio.run(app)
SocketIO客户端程序
$(document).ready(function(){var socket = io.connect('http://' + document.domain + ':' + location.port + '/test');socket.on('my response', function(msg) {$('#log').append('<p>Received: ' + msg.data + '</p>');});$('form#emit').submit(function(event) {socket.emit('my event', {data: $('#emit_data').val()});return false;});$('form#broadcast').submit(function(event) {socket.emit('my broadcast event', {data: $('#broadcast_data').val()});return false;}); });
使用Flask-Sockets
sever端:
from flask import Flask from flask_sockets import Sockets import datetime import time import randomapp = Flask(__name__) sockets = Sockets(app)@sockets.route('/echo') def echo_socket(ws):while not ws.closed:now = datetime.datetime.now().isoformat() + 'Z'ws.send(now) #发送数据time.sleep(1)@app.route('/') def hello():return 'Hello World!'if __name__ == "__main__":from gevent import pywsgifrom geventwebsocket.handler import WebSocketHandlerserver = pywsgi.WSGIServer(('', 5000), app, handler_class=WebSocketHandler)print('server start')server.serve_forever()
client端:
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><script src="https://cdn.bootcss.com/jquery/3.2.0/jquery.js"></script> </head> <body><div id="time" style="width: 300px;height: 50px;background-color: #0C0C0C;color: white;text-align: center;line-height: 50px;margin-left: 40%;font-size: 20px"></div><script>var ws = new WebSocket("ws://127.0.0.1:5000/echo"); #连接serverws.onmessage = function (event) {content = document.createTextNode(event.data); # 接收数据$("#time").html(content);};</script></body> </html>
在flask上使用websocket相关推荐
- 在IIS上搭建WebSocket服务器(三)
在IIS上搭建WebSocket服务器(三) 原文:在IIS上搭建WebSocket服务器(三) 编写客户端代码 1.新建一个*.html文件. ws = new WebSocket('ws://19 ...
- openshift_在WildFly和OpenShift上的WebSocket聊天
openshift 聊天是解释WebSocket的最典型示例之一. 它是一个相当常用的界面,可以很容易地解释WebSocket的基本概念. 当然,Java EE 7 WebSocket也有一个, 在这 ...
- 在WildFly和OpenShift上的WebSocket聊天
聊天是解释WebSocket的最典型示例之一. 它是一个相当常用的界面,可以很容易地解释WebSocket的基本概念. 当然,Java EE 7 WebSocket也有一个, 在这里可用 ! 您可以使 ...
- windows平台上实现websocket服务器
windows平台上实现websocket服务器 目前做个项目需要做个带串口的测试软件,主要功能是一台电脑利用串口控制一台待测试设备,然后通过串口对他进行调试,同时使用串口采集其他测量设备的数值,将测 ...
- python flask上传文件_Python之利用Flask上传文件、Flask_RESTful
Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...
- 在IIS上搭建WebSocket服务器(一)
一.搭建环境 1.System.Web.WebSockets需搭建在Windows8及Server2012以上系统的上. 2.在Windows8及Server2012以上系统的上安装IIS和WebSo ...
- python flask 上传文件到服务器
今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8from flask import Flask,render_templat ...
- python 上传文件夹,python – 使用Flask上传文件夹/文件
我可以通过这个例子上传一个带烧瓶的文件: 但我不知道如何上传文件夹或一些文件.我搜索过,我发现了这个: Uploading multiple files with Flask.最后,我得到了如何上传多 ...
- JD boto3 flask 上传 demo
# -*- coding: utf-8 -*- # by dl import logging import boto3 from botocore.exceptions import ClientEr ...
最新文章
- eclipse创建android工程,在eclipse创建android 工程
- WM中的OutLook开发和操作
- python变量使用前必须先声明、并且一旦声明_初学者学习Python的30天-第18天-文件处理...
- Python3 标准库及相关内容
- hdu 5017 Ellipsoid(西安网络赛 1011)
- Minecraft Forge:如何下载,安装和使用Forge
- 多系统PE win UBUNTU OSX
- Repeater绑定数组
- 2021鹏业安装算量软件常见问题整理(六)
- 两年数据对比柱形图_对比数据还在用千篇一律的柱形图?试试wifi对比图,让人过目不忘...
- jqprint去除页眉页脚
- python股票量化分析
- 计算机基础知识教程excel单元格拆分,电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里...
- nginx配置点播服务
- Win10 64位下解决 NVIDIA 显示设置不可用(小白问题)
- 学习 Linux 的最佳方式
- Windows Subsystem for Linux (WSL2) - WSL 的基本命令
- HttpClient在多线程环境下踩坑总结
- springBoot启动事件监听机制
- android 车载蓝牙模块,安卓APP通过蓝牙串口模块控制DSP车机收音机
热门文章
- 计算机网络本地连接被禁用说明什么,win10系统网络被禁用重新启用本地连接的设置技巧...
- 专题 19 Makefile的使用
- mysql某个表的列除以2_mysql常见面试题(二)
- modprobe和insmod区别
- java解惑你知道多少_Java解惑
- java dh密钥交换_java-信息安全(八)-迪菲-赫尔曼(DH)密钥交换
- php image mask,PHP GD使用一个图像来遮蔽另一个图像,包括透明度
- win10重置此电脑_Windows 10更新导致“重置此电脑”失效 微软给出解决办法
- linux samba 空目录,linux Samba搭建
- 不对全文内容进行索引的 Loki 到底优秀在哪里