直播修仙:使用.NET 的 WebView2 如何获取请求的响应内容,以微信直播的互动直播为例...

背景

近几年直播行业快速发展,门槛也越来越低,越来越的人涌入直播大军。不得不说,直播不仅带来了更多的娱乐消遣,还提供了一个新型的就业方式。

说起直播的类型,有一个非常小众的娱乐直播,没有主播,全靠观众的弹幕互动。比如:直播修仙,观众发弹幕进入修仙,就可以看到自己的打坐小人,然后屏幕各种随机事件,送主播礼物可以获取各种道具。近期在微信刷视频号的时候,发现了好多类似的互动直播,有云蹦迪和各种互动游戏。

19867f622858df8f566a55807a05dcde.png

视频号直播截图

今天我们只聊技术,互动直播平台没有提供相关的 API 如何通过观众的评论来互动的?

实现原理

这里以微信视频号直播为例,介绍一种获取直播事件消息的方法,当然方法也适用于类似的其他平台。

视频号开启直播的时候在视频号的 Web 管理后台,会同时看到观众发送的评论和产生的其他互动。那么只需要通过开发一个浏览器插件就可以实现实时获取评论信息。这里我们 通过 WebView2 来获取请求评论的响应内容来实现。

实现步骤

首先创建一个 WPF 应用,添加 Microsoft.Web.WebView2 包,然后页面添加WebView2组件,首页直接为视频号管理后台。

<Grid><Wpf:WebView2 Source="https://channels.weixin.qq.com/platform/live/liveBuild" MinWidth="800" MinHeight="500" Name="webView"/>
</Grid>

WebView2初始化完成后绑定WebResourceResponseReceived事件。此事件可以获取到所有请求的内容,这里只需要获取/mmfinderassistant-bin/live/msg的链接请求即可,然后获取请求返回的内容。

public MainWindow()
{InitializeComponent();webView.CoreWebView2InitializationCompleted += WebView_CoreWebView2InitializationCompleted;
}private void WebView_CoreWebView2InitializationCompleted(object? sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
{webView.CoreWebView2.WebResourceResponseReceived += CoreWebView2_WebResourceResponseReceivedAsync;
}private async void CoreWebView2_WebResourceResponseReceivedAsync(object? sender, CoreWebView2WebResourceResponseReceivedEventArgs e)
{if (e.Request.Uri.EndsWith("/mmfinderassistant-bin/live/msg") && e.Response != null && e.Response.StatusCode==200){Stream content = await e.Response.GetContentAsync();string jsonText = new StreamReader(content).ReadToEnd();var list = ToLiveMsg(jsonText);}
}

以下是内容的处理。

public List<LiveMsg> ToLiveMsg(string str) {JsonNode jsonNode = JsonNode.Parse(str)!;var res = new List<LiveMsg>();var dataInfo = jsonNode["data"];if (dataInfo is null) return res;if (dataInfo["msgList"] is null) return res;foreach (var item in dataInfo["msgList"]!.AsArray()){var msg = JsonSerializer.Deserialize<LiveMsg>(item);Debug.Print(msg.ToString());res.Add(msg!);}return res;
}/// <summary>
/// 直播互动消息内容
/// </summary>
/// <param name="nickname">昵称</param>
/// <param name="headUrl">头像URL</param>
/// <param name="content">消息内容</param>
/// <param name="type">消息类型</param>
/// <param name="username">用户ID</param>
/// <param name="clientMsgId">消息ID</param>
public record LiveMsg(string nickname,string headUrl,string content,int type,string username,string clientMsgId);

最后

这里介绍了评论的获取方式,点赞和礼物的消息,可以通过类似的方式审查请求获取到对应的内容。本文虽以互动直播为例,但主要为介绍如何使用.NET 的 WebView2 获取请求的响应内容。如果你对这种互动直播感兴趣可以通过 .NET 技术自己开发一个新的互动直播模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/281832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

web第6次作业position

position 属性指定了元素的定位类型。 position 属性的五个值&#xff1a; static &#xff08;静态定位&#xff09; HTML元素的默认值&#xff0c;即没有定位&#xff0c;元素出现在正常的流中。 静态定位的元素不会受到 top, bottom, left, right影响。 div.stati…

GeneralUpdate版本更新公告20221009

大家好我是juster&#xff0c;GeneralUpdate的开源项目作者。这次将发布GeneralUpdate兼容.NET MAUI和多平台为核心的版本。经过国庆假期的打磨修复了大量开源社区开发者的提交的bug和不合理修改建议&#xff0c;重构、删除了大量代码和结构使用和上一个版本没有太大变化。1.更…

实验2 java_《Java程序设计》实验2

1、使用java语言编程&#xff0c;从键盘输入N个整数存储到数组中&#xff0c;求数组所有元素的和、最大值和平均值。import java.util.Scanner;public class Program01{public static void main(String [] args){Scanner scanner new Scanner(System.in);System.out.println(&…

WPF遍历当前容器中某种控件的方法

原文:WPF遍历当前容器中某种控件的方法版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/m0_37591671/article/details/79528845 WPF遍历当前容器中某种控件的方法 WPF遍历当前容器中某种控件的方法1.目的&#xff1a;2.实现思…

善用Object.defineProperty巧妙找到修改某个变量的准确代码位置

2019独角兽企业重金招聘Python工程师标准>>> 我今天的工作又遇到一个难题。前端UI右下角这个按钮被设置为"禁用(disabled)"状态。 这个按钮的可用状态由属性enabled控制。我通过调试发现&#xff0c;一旦下图第88行代码执行完毕之后&#xff0c;这个按钮的…

使用 C# 开发的轻量级开源数据库 LiteDB

你好&#xff0c;这里是 Dotnet 工具箱&#xff0c;定期分享 Dotnet 有趣&#xff0c;实用的工具或组件&#xff0c;希望对您有用&#xff01;简介 LiteDB 是一个小型、快速、轻量级的 .NET NoSQL 嵌入式数据库&#xff0c;也就是我们常说的 K/V 数据库&#xff0c;完全用 C# …

微信小程序仿微信SlideView组件slide-view

微信小程序仿微信SlideView组件。 使用 1、安装 slide-view 从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或以上开始&#xff0c;小程序支持使用 npm 安装第三方包。 npm install --save miniprogram-slide-view2、在需要使用 slide-view 的页面 page.json 中…

hibernate 环境搭建测试

对于hibernate的介绍&#xff0c;网络上一搜一堆&#xff0c;恐怕我写的也没前辈总结的好。这个博主总结的十分好,方便大家欣赏 http://blog.csdn.net/liujiahan629629/article/details/21442607 真正要掌握&#xff0c;还得需要自己动手&#xff0c;才能丰衣足食。所需jar包j…

C# WPF 中使用 MahApps.Metro.IconPacks 提供的图标

概述我们在桌面应用程序开发时经常会用到很多图标&#xff0c;时常我是在阿里矢量图库下载&#xff1a;https://www.iconfont.cn/&#xff0c;然后存放多项目中去引用&#xff0c;不过这样操作起来有点繁琐&#xff0c;这节我们介绍一个更加便捷的方式.用法概述Wpf 图标管理工具…

java多线程同时运行_Java实现的两个线程同时运行案例

本文实例讲述了Java实现的两个线程同时运行。分享给大家供大家参考&#xff0c;具体如下&#xff1a;/*** 两个案例同时运行案例* 1:这个两个线程并不是有规律的运行而是有没有规律的交替运行*/package com.test3;public class Demo10_3 {/*** param args*/public static void …

dotnet 用 SourceGenerator 源代码生成技术实现中文编程语言

相信有很多伙伴都很喜欢自己造编程语言&#xff0c;在有现代的很多工具链的帮助下&#xff0c;实现一门编程语言&#xff0c;似乎已不是一件十分困难的事情。我利用 SourceGenerator 源代码生成技术实现了一个简易的中文编程语言&#xff0c;核心原理是将中文编程语言翻译为 C#…

HTTP/2 规格制定完成

IETF HTTP工作者的负责人Mark Nottingham在其博客上宣布HTTP/2规格制定完成&#xff0c;接下来将是分配RFC编号和正式发表。HTTP是Web的核心技术之一&#xff0c;相比HTTP/1&#xff0c;HTTP/2的改进之处包括更快的页面加载&#xff1b;更长久的连接&#xff1b;服务器推送&…

easyui combobox java_Easyui的combobox实现动态数据级联效果

实现从数据库中动态获取对应的list集合&#xff0c;并在easyui的combobox中显示出来。实现的效果如下&#xff1a;1、数据库的表设计如图所示2、数据库中填写相关的数据&#xff0c;如图所示。如图所示【法律法规】是所属栏目&#xff0c;因此他的字段parentid是0。【中国公民出…

为什么应该默认将 Class 设为密封类?

前言最近在 dotnet/sdk 上看到一个 Issue&#xff0c;它提出了一个有趣的要求&#xff1a;默认情况下将类设置为密封类(Sealed)&#xff1f;什么是密封类&#xff1f;默认情况下&#xff0c;类是开放的&#xff0c;这意味着它是可以被继承的。例如&#xff1a;class BaseClass …

Spring工具类的使用

2019独角兽企业重金招聘Python工程师标准>>> Spring-core中提供了大量的工具类&#xff0c;常用的有StringUtils、ObjectUtils、NumberUtils、Base64Utils等&#xff0c;Spring工具类在spring-core.jar中的org.springframework.util包下。 org.springframework.util…

python作业高级FTP(第八周)

作业需求&#xff1a; 1. 用户加密认证 2. 多用户同时登陆 3. 每个用户有自己的家目录且只能访问自己的家目录 4. 对用户进行磁盘配额、不同用户配额可不同 5. 用户可以登陆server后&#xff0c;可切换目录 6. 查看当前目录下文件 7. 上传下载文件&#xff0c;保证文件一致性 8…

Edge 浏览器被爆存在 XSS 绕过漏洞

来自知名安全测试套件Burp Suite厂商PortSwigger的安全专家Gareth Heyes近日在微软Edge浏览器的内置XSS过滤器存在绕过漏洞&#xff0c;这就意味着尽管微软在Edge浏览器中进行了大量的安全策略部署&#xff0c;但用户浏览网页的时候依然有可能让攻击者通过这种方式在Edge浏览器…

来了!十大更新

面向 Windows 10 正式版用户&#xff0c;微软发布了 2022 年 10 月更新。Windows 10 版本 21H1 更新后操作系统内部版本升级至 Build 190432130/2132&#xff08;带外更新&#xff09;。Windows 10 版本 21H2 更新后操作系统内部版本升级至 Build 19044.2130/2132&#xff08;带…

使用ansible 批量分发SSH Key

先确保你电脑有ansible&#xff0c;我是mac的用brew安装,其他可用yum安装brew search ansiblebrew install ansible我已经安装好2.7了生成下自己的key&#xff0c;一路回车ssh-keygen -t rsa编辑host&#xff0c;添加需要增加ssh key的机器vi /etc/ansible/hosts【hostgroup】我…

使用Git简单笔记

这里只是作为简单的笔记整理&#xff0c;第一次使用的推荐先看一下廖大的教程&#xff0c;内容很多很细&#xff0c;可以边看边练、看不懂的地方先记着、争取七七八八看下来。 心情不佳的分割线 廖雪峰的git教程&#xff1a; https://www.liaoxuefeng.com/wiki/001373951630592…