ddiu8081 / blive-message-listener

Bilibili live danmu listener with type. 类型友好的 Bilibili 直播间弹幕监听库。
https://npmjs.com/blive-message-listener
MIT License
147 stars 14 forks source link

Connected to server but no Danmu received. #28

Open tymon42 opened 1 year ago

tymon42 commented 1 year ago

Describe the bug

Chinese is OK for me, I would like chatting in Chinese.

I wrote a very simple program, and it goes like this:

onIncomeDanmu: (msg) => {
...
},
onOpen: () => {
console.log('connected')
},
onStartListen: () => {
console.log('start listen')
},
onError: (err: any) => {
console.log(`error: ${err}`)

In the past few days, every time this code is executed, it can output connected and start listen correctly but there is no Danmu msg received.

I don't know what happened, but I noticed that there is a similar issue with the library that this project depends on here.

Reproduction

https://gist.github.com/tymon42/ca150b1f93a82c1be0f1bffb0586f716

System Info

System:
    OS: macOS 13.4
    CPU: (8) arm64 Apple M2
    Memory: 79.36 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Binaries:
    Node: 19.7.0 - ~/.nvm/versions/node/v19.7.0/bin/node
    Yarn: 1.22.19 - ~/.nvm/versions/node/v19.7.0/bin/yarn
    npm: 9.5.0 - ~/.nvm/versions/node/v19.7.0/bin/npm
    pnpm: 8.5.1 - ~/.nvm/versions/node/v19.7.0/bin/pnpm
  Browsers:
    Edge: 115.0.1901.188
    Safari: 16.5

Used Package Manager

yarn

Validations

tymon42 commented 1 year ago

issue of 连接和心跳包都是正常的,但获取不到弹幕的推送

starknt commented 1 year ago

似乎在老旧的websocket服务器上,确实是接收不到弹幕消息。我通过修改到新的服务器地址上时,却能正常接收到弹幕消息, 但似乎还不是很稳定。

issue of 连接和心跳包都是正常的,但获取不到弹幕的推送

starknt commented 1 year ago

issue of 连接和心跳包都是正常的,但获取不到弹幕的推送

我会发布一个新的版本来尝试解决问题

starknt commented 1 year ago

或者手动传入一个 url 配置, 目前可用的url有 wss://tx-bj-live-comet-03.chat.bilibili.com/sub

tymon42 commented 1 year ago

或者手动传入一个 url 配置, 目前可用的url有 wss://tx-bj-live-comet-03.chat.bilibili.com/sub

扫了眼代码,好像不能在 blive-message-listener 里面改?

需要去到 tinny-bilibili-ws 里面改 这一段 吗?

ddiu8081 commented 1 year ago

或者手动传入一个 url 配置, 目前可用的url有 wss://tx-bj-live-comet-03.chat.bilibili.com/sub

扫了眼代码,好像不能在 blive-message-listener 里面改?

需要去到 tinny-bilibili-ws 里面改 这一段 吗?

tiny-bilibili-ws 的参数本身支持外部传入,看起来需要这个库修改一下子,在建立连接的时候允许传参。(好像近期有个昵称变星号的问题也需要传参来着)

tymon42 commented 1 year ago

或者手动传入一个 url 配置, 目前可用的url有 wss://tx-bj-live-comet-03.chat.bilibili.com/sub

扫了眼代码,好像不能在 blive-message-listener 里面改? 需要去到 tinny-bilibili-ws 里面改 这一段 吗?

tiny-bilibili-ws 的参数本身支持外部传入,看起来需要这个库修改一下子,在建立连接的时候允许传参。(好像近期有个昵称变星号的问题也需要传参来着)

  1. 确实没发现 blive-message-listener 可以传参数,等大佬设计一下;
  2. 说起来你可能不信,昵称变星号的问题,我在使用 blive-message-listener 的时候没遇到,别家库都碰到了。
tymon42 commented 1 year ago

除此之外,我发现收不到弹幕的情况只出现在 node 环境,浏览器下没问题。

starknt commented 1 year ago

已经发布了新版本测试修复它 https://github.com/starknt/tiny-bilibili-ws/issues/5#issue-1856228584

starknt commented 1 year ago

现在b站好像有很多弹幕服务器 image

tymon42 commented 1 year ago

v0.1.9 这个 release 好像还没出来哦?是不是 Action出问题了?

starknt commented 1 year ago

v0.1.9 这个 release 好像还没出来哦?是不是 Action出问题了?

忘记打tag了,下次用 bumpp 来弄, npm 包已经发了,github release 没发而已

ddiu8081 commented 1 year ago

加了个 ws 用来透传参数

startListen(652581, handler, {
  ws: {
    host: 'xxxx.chat.bilibili.com',
  }
})
ddiu8081 commented 1 year ago
  1. 确实没发现 blive-message-listener 可以传参数,等大佬设计一下;
  2. 说起来你可能不信,昵称变星号的问题,我在使用 blive-message-listener 的时候没遇到,别家库都碰到了。

我自己有碰到过,有时候又正常,应该是灰度测试?据说传个 uid 进去就行了

starknt commented 1 year ago
  1. 确实没发现 blive-message-listener 可以传参数,等大佬设计一下;
  2. 说起来你可能不信,昵称变星号的问题,我在使用 blive-message-listener 的时候没遇到,别家库都碰到了。

我自己有碰到过,有时候又正常,应该是灰度测试?据说传个 uid 进去就行了

应该是没有uid,被当成游客了

champkeh commented 1 year ago

是的,未登录用户你直接在B站网页看,超过5分钟就会提示你昵称会被脱敏,如下图:

image

需要传uid才可以。

另外,也欢迎大佬们使用我这个工具获取弹幕,这个是还原B站的websocket连接逻辑写的,包括多地址切换等

ddiu8081 commented 1 year ago

另外,也欢迎大佬们使用我这个工具获取弹幕,这个是还原B站的websocket连接逻辑写的,包括多地址切换等

@champkeh 可以可以,曾经也想用 blive-message-listener 搞一个翻译后的 websocket 服务来着,后来担心服务器撑不住就放弃了。私有部署是个不错的方案

simon300000 commented 1 year ago

今天似乎问题加重了 有什么新进展吗

tymon42 commented 1 year ago

今天似乎问题加重了 有什么新进展吗

确实加重了,多个直播间都能听到主播说收不到弹幕

starknt commented 1 year ago

今天似乎问题加重了 有什么新进展吗

确实加重了,多个直播间都能听到主播说收不到弹幕

或许只能放弃 WEB 端支持了

tymon42 commented 1 year ago

今天似乎问题加重了 有什么新进展吗

确实加重了,多个直播间都能听到主播说收不到弹幕

或许只能放弃 WEB 端支持了

不过我的情况下,Node 环境有很小的概率能收到弹幕,nuxt3里用这个库就没遇到过“收不到弹幕”的问题(我也懵了

starknt commented 1 year ago

今天似乎问题加重了 有什么新进展吗

确实加重了,多个直播间都能听到主播说收不到弹幕

或许只能放弃 WEB 端支持了

不过我的情况下,Node 环境有很小的概率能收到弹幕,nuxt3里用这个库就没遇到过“收不到弹幕”的问题(我也懵了

现在在 Node 端的还需要改进一下连接策略和认证包,不然和 WEB 端是一样的