Skip to content

连接方式比较

John Smith edited this page Apr 21, 2024 · 2 revisions

连接方式比较

定义

这里的服务器一般指的是软件意义上的服务器,它可以运行在你的电脑,或者某个远程主机。为了避免混淆,先在这里做定义

公共服务器:作者搭建的服务器,域名为chat.bilisc.com

blivechat服务器,简称服务器:如果是通过公共服务器使用则是公共服务器;如果是本地使用则是你的电脑(运行blivechat.exe之后看到的黑框);如果是通过第三方服务器使用则是第三方服务器

判断blivechat服务器的方法:用浏览器打开blivechat主页,看浏览器URL中的域名。如果是chat.bilisc.com则是公共服务器;如果是localhost或者127.0.0.1则是你的电脑;其他情况则是第三方服务器

前端直连和通过服务器转发

太长不看:如果是本地使用,建议开启通过服务器转发,否则不开启

前端直连

前端直连

优点:

  • 消息不经过服务器,服务器的负担更小。这也是我加入这种连接方式,并设为默认值的原因
  • 对服务器的依赖更少
  • 消息延迟会稍微低一点,不过这可以忽略

缺点:

  • 每开一个浏览器页面就会创建一个连接,如果使用身份码连接还需要加上项目心跳,对资源的开销大
  • B站会限制同一个身份码创建的连接数,超过了就不能创建新的连接。当然如果你只开一个浏览器页面就没有这个问题
  • 不能使用插件、翻译等高级功能

通过服务器转发

通过服务器转发

优点:

  • 即使开多个浏览器页面也只有一个到B站服务器的连接和项目心跳,对资源的开销小,而且不会触发B站的连接数限制
  • 可以使用插件、翻译等高级功能

缺点:

  • 服务器的负担更大
  • 更依赖服务器。万一服务器挂了或者你连接不上服务器,则不能获取消息。使用身份码时还会依赖公共服务器
  • 消息延迟会稍微高一点。如果是本地使用,几乎不会增加延迟;如果是通过公共服务器使用,增加的延迟也不会超过1秒

房间ID和身份码

其实现在还留着房间ID的选项只是为了兼容旧版本,或者我自己开发时测试用。房间ID的接口不能保证会及时维护

房间ID

优点:

  • 可以连接任意直播间
  • 不依赖公共服务器。万一公共服务器挂了,可以通过 本地使用 + 使用房间ID连接 的方式应急,这种方式完全不依赖公共服务器
  • 用户更容易理解
  • 能收到更多消息和字段。不过大部分消息没被使用,这点可以认为和使用身份码时差不多

缺点:

  • 不能获取头像、用户名、UID。而且会导致一些插件不能正常工作
  • 使用的是非官方接口,随时有可能被风控而失效

身份码

(B站这个命名不太好,很多人还以为是UID或者房间ID或者身份证😑。所以我代码里写的都是授权码auth_code

优点:

  • 可以获取头像、用户名、用户唯一标识(不是UID)
  • 使用的是官方接口,相对更稳定

缺点:

  • 只能连接主播授权的直播间,因为只有主播自己能看到身份码
  • 无论是哪种使用方式和连接方式,必须依赖公共服务器
  • 很多人不会用身份码(引导已经写得很清楚了,这还不会用我也没办法)
  • 比使用房间ID时收到的消息和字段更少,比如不能判断是否是房管(能收到什么消息和字段还得看B站脸色)