斗鱼弹幕服务器第三方接入协议v1.6.2,.NET斗鱼直播弹幕客户端(上)

前言

现在直播平台由于弹幕的存在,主播与观众可以更轻松地进行互动,非常受年轻群众的欢迎。斗鱼TV就是一款非常流行的直播平台,弹幕更是非常火爆。看到有不少主播接入 弹幕语音播报器、 弹幕点歌等模块,这都需要首先连接斗鱼弹幕。

经常看到其它编程语言的开发者,分享了他们斗鱼弹幕客户端的代码。.NET当然也能做,还能做得更好(只是不知为何很少见人分享😂)。

本文将包含以下内容:我将使用斗鱼TV官方公开的弹幕PDF文档,使用 Socket/ TcpClient连续斗鱼弹幕;

分析如何利用 .NET强大的 ValueTask特性,在保持代码简洁的同时,轻松享受高性能异步代码的快乐;

然后将使用 ReactiveExtensions( RX),演示如何将一系列复杂的弹幕接入操作,就像写 HelloWorld一般容易;

用我自制的“准游戏引擎” FlysEngine,只需少量代码,即可将斗鱼TV的弹幕显示左右飞过的效果;

本文内容可能比较多,因此分上、下两篇阐述,上篇将具体聊聊第1、2点,第3、4点将在下篇进行,整篇完成后,最终效果如下:

173084763_2_20191013101621641

斗鱼直播API

现在网上可以轻松找到 斗鱼弹幕服务器第三方接入协议v1.6.2.pdf(网上搜索该关键字即可找到)。文档提到,第三方接入弹幕服务的服务器为 openbarrage.douyutv.com:8601,我们可以使用 TcpClient来方便连接:

using (var client = new TcpClient())

{

client.ConnectAsync('openbarrage.douyutv.com', 8601).Wait();

Stream stream = client.GetStream();

// do other works

}

该文档中提到所有数据包格式如下:

173084763_3_20191013101621875

注意前两个4字节的消息长度是完全一样的,可以使用 Debug.Assert进行断言。

其中所有数字都为小端整数,刚好 .NET的 BinaryWriter类默认都以小端整数进行转换。可以利用起来。

因此,读取一个消息包的完整代码如下:using (var reader = new BinaryReader(stream, Encoding.UTF8, true))

{

var fullMsgLength = reader.ReadInt32();

var fullMsgLength2 = reader.ReadInt32();

Debug.Assert(fullMsgLength == fullMsgLength2);

var length = fullMsgLength - 1 - 4

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值