我们正处于一个信息大暴发的时代,每天都能产生数以百万计的新闻资讯!
虽然有大数据推荐,但面对海量数据,通过我们的调研发现,在一个小时的时间里,您通常无法真正有效地获取您感兴趣的资讯!
头条新闻资讯订阅,旨在帮助您收集感兴趣的资讯内容,并且在第一时间通知到您。可以有效节约您获取资讯的时间,避免错过一些关键信息。
点击上方蓝字
关注我们
(本文阅读时间:7分钟)
WebTransport 是一个新的 Web API,使用 HTTP/3 协议来支持双向传输。它用于 Web 客户端和 HTTP/3 服务器之间的双向通信。它支持通过不可靠的 Datagrams API 发送数据,也支持可靠的 Stream API 发送数据。
因为 HTTP/3 使用了基于 UDP 的 QUIC 协议,所以 Web Transport 可以在一个连接上创建多个流,而且不会相互阻塞。
WebTransport 支持三种不同类型的流量:数据报(datagrams) 以及单向流和双向流。
WebTransport 的设计基于现代 Web 平台基本类型(比如 Streams API)。它在很大程度上依赖于 promise,并且可以很好地与 async 和 await 配合使用。
微软MVP实验室研究员

李帅
微软最有价值专家(MVP),专注于云原生,分布式系统,可观测性技术。多年 .NET 开发经验,开源爱好者,技术博客博主。
在 .NET 7 中使用 WebTransport
WebTransport 在 .NET 7 及以上版本可用,我们新建一个 .NET Core 的空项目,修改 csproj 文件,设置 EnablePreviewFeatures 和 RuntimeHostConfigurationOption ,如下: < ProjectSdk= "Microsoft.NET.Sdk.Web"> < PropertyGroup> < EnablePreviewFeatures> True EnablePreviewFeatures> PropertyGroup>
< ItemGroup> < RuntimeHostConfigurationOptionInclude= "Microsoft.AspNetCore.Server.Kestrel.Experimental.WebTransportAndH3Datagrams"Value= "true"/> ItemGroup> Project>
要设置 WebTransport 连接,首先需要配置 Web 主机并通过 HTTP/3 侦听端口:varbuilder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel( ( context, options) => {// Port configured for WebTransportoptions.ListenAnyIP([SOME PORT], listenOptions=> {listenOptions.UseHttps(GenerateManualCertificate);listenOptions.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;});});varapp = builder.Build;
修改下面的代码,接收 WebTransport 请求和会话。app.Run( async(context) => {varfeature = context.Features.GetRequiredFeature
awaitapp.RunAsync;
等待 AcceptStreamAsync 方法直到接收到一个 Stream,使用 stream.Transport.Input 写入数据,stream.Transport.Output 读取数据。varstream = awaitsession.AcceptStreamAsync(CancellationToken.None);
varinputPipe = stream.Transport.Input; varoutputPipe = stream.Transport.Output;

在 Java 中使用 WebTransport
传入服务地址并创建 WebTransport 实例, transport.ready 完成,此时连接就可以使用了。consturl = 'https://localhost:5002'; consttransport = newWebTransport(url);
awaittransport.ready;
连接到服务器后,可以使用 Streams API 发送和接收数据。// Send two Uint8Arrays to the server.conststream = awaittransport.createSendStream; constwriter = stream.writable.getWriter; constdata1 = newUint8Array([ 65, 66, 67]); constdata2 = newUint8Array([ 68, 69, 70]); writer.write(data1);writer.write(data2);try{ awaitwriter.close; console.log( 'All data has been sent.'); } catch(error) { console.error( `An error occurred: ${error}` ); }
客户端和服务端双向通信
下面是一个具体的例子,使用 WebTransport 实现了客户端和服务端的双向通信。


完整的代码在下面的 Github 地址。希望对您有用! Github 地址https://github.com/danroth27/AspNetCoreNet7Samples/tree/main/WebTransportInteractiveSampleApp
*未经授权请勿私自转载此文章及图片。
扫码查看 .NET 7 的新增功能
微软最有价值专家(MVP)
微软最有价值专家是微软公司授予第三方技术专业人士的一个全球奖项。29年来,世界各地的技术社区领导者,因其在线上和线下的技术社区中分享专业知识和经验而获得此奖项。
MVP是经过严格挑选的专家团队,他们代表着技术最精湛且最具智慧的人,是对社区投入极大的热情并乐于助人的专家。MVP致力于通过演讲、论坛问答、创建网站、撰写博客、分享视频、开源项目、组织会议等方式来帮助他人,并最大程度地帮助微软技术社区用户使用 Microsoft 技术。
更多详情请登录官方网站:
https://mvp.microsoft.com/zh-cn 返回搜狐,查看更多
责任编辑:
以上内容为资讯信息快照,由td.fyun.cc爬虫进行采集并收录,本站未对信息做任何修改,信息内容不代表本站立场。
快照生成时间:2023-01-04 05:45:05
本站信息快照查询为非营利公共服务,如有侵权请联系我们进行删除。
信息原文地址: