0.0.8 • Published 2 years ago

isomorphic-danmaku v0.0.8

Weekly downloads
4
License
MIT
Repository
-
Last release
2 years ago

📖 isomorphic-danmaku

version MIT License PRs Welcome

browser/nodejs 同构的直播平台弹幕获取

此package仍在活跃开发阶段,接口规范尚未确定,请注意后续可能产生的breaking change

💻 支持平台(字母排序)

  • acfun
  • bilibili

暂不对数据二次封装,需自行处理消息的解析。之后可能会有计划提出并封装为一种标准格式并提供一个 pure function pipe

📖 安装

npm install isomorphic-danmaku

🍥 食用方法

建立连接

  1. 预获取房间信息(bilibili可省略,acfun必须)
// 以esmodule导入为例子,nodejs下也可以使用require()
import { getAcfunRoomInfo, getBilibiliRoomInfo } from 'isomorphic-danmaku-server'; //注意后面的-server

// 获取对应房间信息

const acinfo = await getAcfunRoomInfo(123456);

const biliinfo = await getBilibiliRoomInfo(123456);

此步骤只能运行在nodejs上,因为浏览器无法跨域请求。如果你想在浏览器上直接连接(ws默认不禁止跨域),则需要有一个服务端为其提供这些预请求房间信息。

  1. 连接房间并获取弹幕
import { connectBilibiliLiveWs } from 'isomorphic-danmaku';
// 对于acfun
import { connectAcfunLiveWs } from 'isomorphic-danmaku';

for await (let msg of connectBilibiliLiveWs({ roomId: 123456 })){
    // 直接处理msg
    console.log(msg);
    // 跳过continue,停止处理则可使用break
}

Acfun需要的参数信息

{
    roomId: number; //房间号
    //以下字段均从上述接口获取
    acSecurity: string;
    serviceToken: string;
    tickets: string[];
    liveId: string;
    userId: stirng;
    enterRoomAttach: string;
}

Bilibili需要的参数信息

{
    roomId: number; // 房间号
    host?: string; // 连接的服务器,是一个域名
    token?: string; // 可从roominfo接口获取
}

scripts/文件夹内有nodejs的例子。

在浏览器上使用(连接ws的部分)

在 package.json 里添加以下字段

"browser": {
    "@peculiar/webcrypto": false
}

这是为了告诉 bundler(如 webpack,rollup 此类)忽略这些包的导入(大多是node环境独有的包)。

暂不提供 umd 打包格式,即无法直接通过添加一个<script>标签的形式引入

📃 TODO

  • acfun返回内容的细化(搬砖)
  • 添加测试
  • 标准化信息,标准的制定,pure function pipe

❓ 常见问题

Q: 'Can't resolve module 'xxx' ....

A: 这是使用webpack等打包浏览器端时经常出现的问题。原因往往是引入的包引入的包引入的包...总之在某一层引入了只能运行于node环境的包,即使实际逻辑根本不会用到那个包。可以通过上述package.json中的browser字段添加那个包以解决。

0.0.8

2 years ago

0.0.7

3 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago