Rust HTTP 协议栈在终端通信场景的实践 - 胡凯
第三届中国Rust开发者大会 Rust HTTP 协议栈在终端通信场景的实践 胡凯 hukai45@huawei.com 华为 公共开发部 嵌入式软件能力中心 什么是 HTTP 协议? ⚫ HTTP 协议介绍 目录 终端场景下 HTTP 协议的主要使用场景,以及需要思考的问题。 ⚫ 终端 HTTP 通信场景浅析 我们当前结合 Rust 和终端通信场景的实践的简单介绍。 ⚫ Rust Rust 与 HTTP 协议栈结合的业界实现。 ⚫ Rust 与 HTTP 协议 HTTP 协议介绍 Part 01 什么是 HTTP 协议? Rust China Conf 2022 – 2023, Shanghai, China Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议,即超文本传输协议(HyperText 和超媒体 信息系统的应用层协议。 HTTP 是一个客户端(用户)和服务端(网站)之间请求和应答的标准。 Rust China Conf 2022 – 2023, Shanghai, China HTTP 协议介绍 HTTP 协议主要具有以下特点: ✓ 支持客户/服务器模式。 ✓ 简单快速:客户向服务器请求服务时,只需传送 请求方法、路径和请求头。HTTP 协议简单、HTTP 服务器的程序规模小,因而通信速度很快。0 码力 | 26 页 | 1.25 MB | 1 年前3在Solana合约链实现IBC协议跨链互操作 - 苏胤榕
@DaviRain 在Solana合约链 实现IBC协议跨链互操作 简单介绍下IBC协议是什么,及其生态 简介 > 介绍IBC协议和其在跨链互操作中的作用 IBC协议中的角色和参与者 1. 客户端 2. 连接 3. 通道 4. 包 4. 中继器 解释为什么选择在Rust合约链中实现IBC协议 - IBC协议的核心已经被协议核心团队用Rust语言实现。 - 对于本身就是 对于本身就是使用Rust语言作为智能合约开发的区块链 平台来说,支持集成支持IBC协议会很方便。 - 这里优先构想了在Solana链上实现IBC协议,因为 Solana平台本身极 低的gas消耗,很适合我现在构思 的这套实现方案。(后面会做解释) 引入Solana作为示例平台 - Solana极低的Gas花销。 - Anchor合约开发框架,大大降低了Rust合 约开发者在Solana上开发智能合约的难度。 - 以及本人对Solana平台的喜欢,优先考虑 了Solana平台,但是这套方案是可以推广到 任何的Rust智能合约平台的。 大致讲解下IBC协议的原理, 以及参与整个IBC协议活动的不同决策 IBC协议概述> 详细介绍IBC协议的基本概念和原理 Connection创建原理 Connection创建OpenInit Connection创建OpenTry Connection创建OpenAck0 码力 | 29 页 | 3.05 MB | 1 年前3PyWebIO v0.3.0 使用手册
aiohttp相关 其他 第三方库生态 数据可视化 Demos 基本demo 数据可视化demo Other 常用的Codemirror选项 Nginx WebSocket配置示例 Release notes 实现文档 服务器-客户端通信协议 Command Event Indices and tables 索引 模块索引 搜索页面 Discussion and support Need # 下拉选择框 gift = select('Which gift you want?', ['keyboard', 'ipad']) # CheckBox agree = checkbox("用户协议", options=['I agree to terms and conditions']) # Text Area text = textarea('Text Area', rows=3, placeholder='Some 需要在Tornado应用中引入两个 RequestHandler , 一个 RequestHandler 用 来提供静态的前端文件,另一个 RequestHandler 用来和浏览器进行 WebSocket通讯: import tornado.ioloop import tornado.web from pywebio.platform.tornado import webio_handler0 码力 | 72 页 | 8.55 MB | 1 年前3PyWebIO v0.3.0 使用手册
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 4.10 服务器-客户端通信协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 5 Indices and tables 下拉选择框 gift = select('Which gift you want?', ['keyboard', 'ipad']) # CheckBox agree = checkbox("用户协议", options=['I agree to terms and conditions']) # Text Area text = textarea('Text Area', rows=3, placeholder='Some 需要在 Tornado 应用中引入两个 RequestHandler , 一个 RequestHandler 用来提供静态的前端文件,另 一个 RequestHandler 用来和浏览器进行 WebSocket 通讯: import tornado.ioloop import tornado.web from pywebio.platform.tornado import webio_handler0 码力 | 70 页 | 1.41 MB | 1 年前3PyWebIO v1.0.3 使用手册
数据可视化demo 其他 常用的Codemirror选项 Nginx WebSocket配置示例 常见问题 Release notes What’s new in PyWebIO 1.0 What’s new in PyWebIO 0.3 What’s new in PyWebIO 0.2 实现文档 服务器-客户端通信协议 Command Event Indices and tables type=PASSWORD) # 下拉选择框 gift = select('Which gift you want?', ['keyboard', 'ipad']) # 勾选选项 agree = checkbox("用户协议", options=['I agree to terms and conditions']) # 单选选项 answer = radio("Choose one", options=['A', aioh�p 需要在Tornado应用中引入两个 RequestHandler , 一个 RequestHandler 用 来提供前端静态文件,另一个 RequestHandler 用来和浏览器进行 WebSocket通讯: import tornado.ioloop import tornado.web from pywebio.platform.tornado import webio_handler0 码力 | 106 页 | 7.34 MB | 1 年前3PyWebIO v1.5.1 使用手册
PyWebIO 1.1 What’s new in PyWebIO 1.0 What’s new in PyWebIO 0.3 What’s new in PyWebIO 0.2 实现文档 服务器-客户端通信协议 Command Event Indices and tables 索引 模块索引 搜索页面 Discussion and support Need help when use PyWebIO platform 模块 pywebio.platform 模块提供了将PyWebIO应用以多种方式部署的支持。 PyWebIO的服务端与浏览器可以通过两种协议(WebSocket 和 HTTP 协议)进行 通信,默认使用WebSocket协议,如果你想使用HTTP协议,你可以选择本模块 中的其他 start_server() 函数。 如果要为PyWebIO应用设置一些网页相关的配置,可以尝试使用 pywebio 用户操作系统使用的语言. 比如 'zh-CN' server_host (str): 当前会话的服务器host,包含域名和端口,端口 为80时可以被省略 origin (str): 当前用户的页面地址. 包含 协议、主机、端口 部分. 比 如 'http://localhost:8080' . 可能为空,但保证当用户的页面地址 不在当前服务器下(即 主机、端口部分和 server_host 不一致)时有 值.0 码力 | 144 页 | 7.46 MB | 1 年前3PyWebIO v1.5.2 使用手册
PyWebIO 1.1 What’s new in PyWebIO 1.0 What’s new in PyWebIO 0.3 What’s new in PyWebIO 0.2 实现文档 服务器-客户端通信协议 Command Event Indices and tables 索引 模块索引 搜索页面 Discussion and support Need help when use PyWebIO platform 模块 pywebio.platform 模块提供了将PyWebIO应用以多种方式部署的支持。 PyWebIO的服务端与浏览器可以通过两种协议(WebSocket 和 HTTP 协议)进行 通信,默认使用WebSocket协议,如果你想使用HTTP协议,你可以选择本模块 中的其他 start_server() 函数。 如果要为PyWebIO应用设置一些网页相关的配置,可以尝试使用 pywebio 用户操作系统使用的语言. 比如 'zh-CN' server_host (str): 当前会话的服务器host,包含域名和端口,端口 为80时可以被省略 origin (str): 当前用户的页面地址. 包含 协议、主机、端口 部分. 比 如 'http://localhost:8080' . 可能为空,但保证当用户的页面地址 不在当前服务器下(即 主机、端口部分和 server_host 不一致)时有 值.0 码力 | 144 页 | 7.46 MB | 1 年前3PyWebIO v1.5.0 使用手册
PyWebIO 1.1 What’s new in PyWebIO 1.0 What’s new in PyWebIO 0.3 What’s new in PyWebIO 0.2 实现文档 服务器-客户端通信协议 Command Event Indices and tables 索引 模块索引 搜索页面 Discussion and support Need help when use PyWebIO platform 模块 pywebio.platform 模块提供了将PyWebIO应用以多种方式部署的支持。 PyWebIO的服务端与浏览器可以通过两种协议(WebSocket 和 HTTP 协议)进行 通信,默认使用WebSocket协议,如果你想使用HTTP协议,你可以选择本模块 中的其他 start_server() 函数。 如果要为PyWebIO应用设置一些网页相关的配置,可以尝试使用 pywebio 用户操作系统使用的语言. 比如 'zh-CN' server_host (str): 当前会话的服务器host,包含域名和端口,端口 为80时可以被省略 origin (str): 当前用户的页面地址. 包含 协议、主机、端口 部分. 比 如 'http://localhost:8080' . 可能为空,但保证当用户的页面地址 不在当前服务器下(即 主机、端口部分和 server_host 不一致)时有 值.0 码力 | 144 页 | 7.46 MB | 1 年前3PyWebIO v1.0.3 使用手册
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.11 服务器-客户端通信协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 5 Indices and tables # 下拉选择框 gift = select('Which gift you want?', ['keyboard', 'ipad']) # 勾选选项 agree = checkbox("用户协议", options=['I agree to terms and conditions']) # 单选选项 answer = radio("Choose one", options=['A', 需要在 Tornado 应用中引入两个 RequestHandler , 一个 RequestHandler 用来提供前端静态文件,另一 个 RequestHandler 用来和浏览器进行 WebSocket 通讯: import tornado.ioloop import tornado.web from pywebio.platform.tornado import webio_handler0 码力 | 94 页 | 1.71 MB | 1 年前5PyWebIO v1.2.3 使用手册
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 4.11 服务器-客户端通信协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 5 Indices and tables PyWebIO 应用。 注意: 当使用 Tornado 后端时,PyWebIO 使用 WebSocket 协议和浏览器进行通讯,如果你的 Tornado 应用 处在反向代理 (比如 Nginx) 之后,可能需要特别配置反向代理来支持 WebSocket 协议,这里 有一个 Nginx 配置 WebSocket 的例子。 Flask 需要添加一个 PyWebIO 相关的路由,用来和浏览器进行 PyWebIO, 发布 1.2.3 访问 http://localhost/tool 即可打开 PyWebIO 应用 aiohttp 需要添加一个 PyWebIO 相关的路由,用来和浏览器进行 WebSocket 通讯: from aiohttp import web from pywebio.platform.aiohttp import static_routes, webio_handler0 码力 | 102 页 | 1.67 MB | 1 年前3
共 711 条
- 1
- 2
- 3
- 4
- 5
- 6
- 72