在flask上使用websocket

Flask-SocketsFlask-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相关推荐

  1. 在IIS上搭建WebSocket服务器(三)

    在IIS上搭建WebSocket服务器(三) 原文:在IIS上搭建WebSocket服务器(三) 编写客户端代码 1.新建一个*.html文件. ws = new WebSocket('ws://19 ...

  2. openshift_在WildFly和OpenShift上的WebSocket聊天

    openshift 聊天是解释WebSocket的最典型示例之一. 它是一个相当常用的界面,可以很容易地解释WebSocket的基本概念. 当然,Java EE 7 WebSocket也有一个, 在这 ...

  3. 在WildFly和OpenShift上的WebSocket聊天

    聊天是解释WebSocket的最典型示例之一. 它是一个相当常用的界面,可以很容易地解释WebSocket的基本概念. 当然,Java EE 7 WebSocket也有一个, 在这里可用 ! 您可以使 ...

  4. windows平台上实现websocket服务器

    windows平台上实现websocket服务器 目前做个项目需要做个带串口的测试软件,主要功能是一台电脑利用串口控制一台待测试设备,然后通过串口对他进行调试,同时使用串口采集其他测量设备的数值,将测 ...

  5. python flask上传文件_Python之利用Flask上传文件、Flask_RESTful

    Flask上传文件 回顾知识点form表单中,一旦涉及到上传文件就要就必须要有enctype属性,而且必须等于multipart/form-data.而且提交方式为'post',method = 'p ...

  6. 在IIS上搭建WebSocket服务器(一)

    一.搭建环境 1.System.Web.WebSockets需搭建在Windows8及Server2012以上系统的上. 2.在Windows8及Server2012以上系统的上安装IIS和WebSo ...

  7. python flask 上传文件到服务器

    今天要做一个简单的页面,可以实现将文件 上传到服务器(保存在指定文件夹) #Sample.py # coding:utf-8from flask import Flask,render_templat ...

  8. python 上传文件夹,python – 使用Flask上传文件夹/文件

    我可以通过这个例子上传一个带烧瓶的文件: 但我不知道如何上传文件夹或一些文件.我搜索过,我发现了这个: Uploading multiple files with Flask.最后,我得到了如何上传多 ...

  9. JD boto3 flask 上传 demo

    # -*- coding: utf-8 -*- # by dl import logging import boto3 from botocore.exceptions import ClientEr ...

最新文章

  1. eclipse创建android工程,在eclipse创建android 工程
  2. WM中的OutLook开发和操作
  3. python变量使用前必须先声明、并且一旦声明_初学者学习Python的30天‍-第18天-文件处理...
  4. Python3 标准库及相关内容
  5. hdu 5017 Ellipsoid(西安网络赛 1011)
  6. Minecraft Forge:如何下载,安装和使用Forge
  7. 多系统PE win UBUNTU OSX
  8. Repeater绑定数组
  9. 2021鹏业安装算量软件常见问题整理(六)
  10. 两年数据对比柱形图_对比数据还在用千篇一律的柱形图?试试wifi对比图,让人过目不忘...
  11. jqprint去除页眉页脚
  12. python股票量化分析
  13. 计算机基础知识教程excel单元格拆分,电脑内怎么将excel表格中某个单元格的内容拆分至不同单元格里...
  14. nginx配置点播服务
  15. Win10 64位下解决 NVIDIA 显示设置不可用(小白问题)
  16. 学习 Linux 的最佳方式
  17. Windows Subsystem for Linux (WSL2) - WSL 的基本命令
  18. HttpClient在多线程环境下踩坑总结
  19. springBoot启动事件监听机制
  20. android 车载蓝牙模块,安卓APP通过蓝牙串口模块控制DSP车机收音机

热门文章

  1. 计算机网络本地连接被禁用说明什么,win10系统网络被禁用重新启用本地连接的设置技巧...
  2. 专题 19 Makefile的使用
  3. mysql某个表的列除以2_mysql常见面试题(二)
  4. modprobe和insmod区别
  5. java解惑你知道多少_Java解惑
  6. java dh密钥交换_java-信息安全(八)-迪菲-赫尔曼(DH)密钥交换
  7. php image mask,PHP GD使用一个图像来遮蔽另一个图像,包括透明度
  8. win10重置此电脑_Windows 10更新导致“重置此电脑”失效 微软给出解决办法
  9. linux samba 空目录,linux Samba搭建
  10. 不对全文内容进行索引的 Loki 到底优秀在哪里