前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2022年11月 数据库-待定勿看

【愚公系列】2022年11月 数据库-待定勿看

作者头像
愚公搬代码
发布2022-12-01 18:12:12
3840
发布2022-12-01 18:12:12
举报
文章被收录于专栏:历史专栏

文章目录

前言

1.技术背景

2.QUIC相关概念

3.HTTP/3.0

一、WebTransport

1.WebTransport概念

2.WebTransport在js中的使用

3.WebTransport在.NET 7中的使用

3.1 创建项目

3.2 侦听HTTP/3端口

3.3 获取WebTransport会话

3.4 监听WebTransport请求

前言

1.技术背景

如今对于网络进行实时通讯的要求越来越高,相关于网络进行实时通讯技术应运而生,如WebRTC,QUIC,HTTP3,WebTransport,WebAssembly,WebCodecs等。

2.QUIC相关概念

QUIC相关文章请看:https://cloud.tencent.com/developer/article/2165209

3.HTTP/3.0

基于QUIC协议:天然复用QUIC的各种优势;

新的HTTP头压缩机制:QPACK,是对HTTP/2中使用的HPACK的增强。在QPACK下,HTTP头可以在不同的QUIC流中不按顺序到达。

一、WebTransport

1.WebTransport概念

WebTransport 是一个协议框架,该协议使客户端与远程服务器在安全模型下通信,并且采用安全多路复用传输技术。最新版的WebTransport草案中,该协议是基于HTTP3的,即WebTransport可天然复用QUIC和HTTP3的特性。

WebTransport 是一个新的 Web API,使用 HTTP/3 协议来支持双向传输。它用于 Web 客户端和 HTTP/3 服务器之间的双向通信。它支持通过 不可靠的 Datagrams API 发送数据,也支持可靠的 Stream API 发送数据。

WebTransport 支持三种不同类型的流量:数据报(datagrams) 以及单向流和双向流。

WebTransport 的设计基于现代 Web 平台基本类型(比如 Streams API)。它在很大程度上依赖于 promise,并且可以很好地与 async 和 await 配合使用。

2.WebTransport在js中的使用

W3C的文档关于支持WebTransport的后台服务进行通信:https://www.w3.org/TR/webtransport/

代码语言:javascript
复制
let transport = new WebTransport("https://x.x.x.x");
await transport.ready;
let stream = await transport.createBidirectionalStream();
let encoder = new TextEncoder();
let writer = stream.writable.getWriter();
await writer.write(encoder.encode("Hello, world! What's your name?"))
writer.close();
console.log(await new Response(stream.readable).text());

3.WebTransport在.NET 7中的使用

3.1 创建项目

新建一个.NET Core 的空项目,修改 csproj 文件

代码语言:javascript
复制
<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net7.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
    <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
    <!-- 1.Turn on preview features -->
    <EnablePreviewFeatures>True</EnablePreviewFeatures>
  </PropertyGroup>

  <ItemGroup>
    <!-- 2.Turn on the WebTransport AppContext switch -->
    <RuntimeHostConfigurationOption Include="Microsoft.AspNetCore.Server.Kestrel.Experimental.WebTransportAndH3Datagrams" Value="true" />
  </ItemGroup>

</Project>

3.2 侦听HTTP/3端口

要设置 WebTransport 连接,首先需要配置 Web 主机并通过 HTTP/3 侦听端口:

代码语言:javascript
复制
// 配置端口
builder.WebHost.ConfigureKestrel((context, options) =>
{
    // 配置web站点端口
    options.Listen(IPAddress.Any, 5551, listenOptions =>
    {
        listenOptions.UseHttps();
        listenOptions.Protocols = HttpProtocols.Http1AndHttp2;
    });
    // 配置webtransport端口
    options.Listen(IPAddress.Any, 5552, listenOptions =>
    {
        listenOptions.UseHttps(certificate);
        listenOptions.UseConnectionLogging();
        listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
    });
});

3.3 获取WebTransport会话

代码语言:javascript
复制
app.Run(async (context) =>
{
    var feature = context.Features.GetRequiredFeature<IHttpWebTransportFeature>();
    if (!feature.IsWebTransportRequest)
    {
        return;
    }
    var session = await feature.AcceptAsync(CancellationToken.None); 
});

await app.RunAsync();

3.4 监听WebTransport请求

代码语言:javascript
复制
var stream = await session.AcceptStreamAsync(CancellationToken.None);

var inputPipe = stream.Transport.Input;
var outputPipe = stream.Transport.Output;

待定。。。。。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-11-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档