Closed lanytcc closed 8 months ago
竟然还有这个问题,我倒是没遇到过,可能我这边网络速度不行 : )
LiveActivity::LiveActivity(const bilibili::LiveVideoResult& live) 这个构造函数现在完全没有在使用了,其实删掉也是可以的。或者 可以把 LiveDanmaku::instance().setonMessage 还有顺便把那两个 GA一起都写到 setCommonData 里面去。
我有两个小建议:
如果要做异步请求的话,可以模仿这个提交来做:https://github.com/xfangfang/wiliwili/pull/228/commits/ec3295ec7f774e2a6467775f5fced7c34f870e71
只需要声明好数据结构,按照如下形式调用即可:
HTTP::getResultAsync<LiveDanmuInfo>(
Api::DanmuInfo,
{{"id", std::to_string(roomid)},
{"type", "0"},
callback, error);
当然你也可以用cpr自己解析一下json,不过json解析的报错或者返回的code报错之类的就需要自己来处理了。
可以了,你可以测试一下
感谢,看来又要更新版本了
发现了一个问题,因为获取token变成异步了,会出现一些比较奇怪的问题,比如:
在获取token返回之前退出直播间,并重新进入。这时候两个异步请求都能正常向后执行。
我想到的一个比较简单的修复是,把获取token的函数提到 activity 里去,这样当 activity销毁的时候,如果异步请求还没有执行结束,那么他的回调就会被舍弃。
LiveDanmaku::instance().setonMessage(onDanmakuReceived);
ASYNC_RETAIN
bilibili::HTTP::getResultAsync<LiveDanmakuinfo>(
"https://api.live.bilibili.com/xlive/web-room/v1/index/"
"getDanmuInfo?type=0&id=" +
std::to_string(this->liveData.roomid),
{},
[ASYNC_TOKEN](const auto& info) {
ASYNC_RELEASE
LiveDanmaku::instance().connect(
liveData.roomid,
std::stoll(ProgramConfig::instance().getUserID()), info);
},
[ASYNC_TOKEN](const std::string& error) {
ASYNC_RELEASE
brls::Logger::error("getDanmuInfo error:{}", error);
});
今天上来跑就崩溃,发现了个惊天大bug😂,居然这么长时间都能跑