mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 00:28:18 +08:00
@@ -136,11 +136,12 @@ class LiveHttp {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static Future liveRoomDanmaPrefetch({roomId}) async {
|
static Future liveRoomDanmaPrefetch({roomId}) async {
|
||||||
var res = await Request().get(Api.liveRoomDmPrefetch, queryParameters: {
|
var res = await Request().get(
|
||||||
'roomid': roomId,
|
Api.liveRoomDmPrefetch,
|
||||||
});
|
queryParameters: {'roomid': roomId},
|
||||||
|
);
|
||||||
if (res.data['code'] == 0) {
|
if (res.data['code'] == 0) {
|
||||||
return {'status': true, 'data': res.data['data']['room']};
|
return {'status': true, 'data': res.data['data']?['room']};
|
||||||
} else {
|
} else {
|
||||||
return {'status': false, 'msg': res.data['message']};
|
return {'status': false, 'msg': res.data['message']};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,17 +111,6 @@ class LiveRoomController extends GetxController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void setVolume(value) {
|
|
||||||
if (value == 0) {
|
|
||||||
// 设置音量
|
|
||||||
volumeOff.value = false;
|
|
||||||
} else {
|
|
||||||
// 取消音量
|
|
||||||
volume = value;
|
|
||||||
volumeOff.value = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> queryLiveInfoH5() async {
|
Future<void> queryLiveInfoH5() async {
|
||||||
var res = await LiveHttp.liveRoomInfoH5(roomId: roomId);
|
var res = await LiveHttp.liveRoomInfoH5(roomId: roomId);
|
||||||
if (res['status']) {
|
if (res['status']) {
|
||||||
@@ -152,20 +141,22 @@ class LiveRoomController extends GetxController {
|
|||||||
if (messages.isEmpty) {
|
if (messages.isEmpty) {
|
||||||
LiveHttp.liveRoomDanmaPrefetch(roomId: roomId).then((v) {
|
LiveHttp.liveRoomDanmaPrefetch(roomId: roomId).then((v) {
|
||||||
if (v['status']) {
|
if (v['status']) {
|
||||||
messages.addAll((v['data'] as List)
|
if ((v['data'] as List?)?.isNotEmpty == true) {
|
||||||
.map((obj) => {
|
messages.addAll((v['data'] as List)
|
||||||
'name': obj['user']['base']['name'],
|
.map((obj) => {
|
||||||
'uid': obj['user']['uid'],
|
'name': obj['user']['base']['name'],
|
||||||
'text': obj['text'],
|
'uid': obj['user']['uid'],
|
||||||
'emots': obj['emots'],
|
'text': obj['text'],
|
||||||
'uemote': obj['emoticon']['emoticon_unique'] != ""
|
'emots': obj['emots'],
|
||||||
? obj['emoticon']
|
'uemote': obj['emoticon']['emoticon_unique'] != ""
|
||||||
: null,
|
? obj['emoticon']
|
||||||
})
|
: null,
|
||||||
.toList());
|
})
|
||||||
WidgetsBinding.instance.addPostFrameCallback(
|
.toList());
|
||||||
(_) => scrollToBottom(),
|
WidgetsBinding.instance.addPostFrameCallback(
|
||||||
);
|
(_) => scrollToBottom(),
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -186,25 +177,28 @@ class LiveRoomController extends GetxController {
|
|||||||
msgStream?.addEventListener((obj) {
|
msgStream?.addEventListener((obj) {
|
||||||
if (obj['cmd'] == 'DANMU_MSG') {
|
if (obj['cmd'] == 'DANMU_MSG') {
|
||||||
// logger.i(' 原始弹幕消息 ======> ${jsonEncode(obj)}');
|
// logger.i(' 原始弹幕消息 ======> ${jsonEncode(obj)}');
|
||||||
|
final info = obj['info'];
|
||||||
|
final first = info[0];
|
||||||
|
final content = first[15];
|
||||||
|
final extra = jsonDecode(content['extra']);
|
||||||
|
final user = content['user'];
|
||||||
messages.add({
|
messages.add({
|
||||||
'name': obj['info'][0][15]['user']['base']['name'],
|
'name': user['base']['name'],
|
||||||
'uid': obj['info'][0][15]['user']['uid'],
|
'uid': user['uid'],
|
||||||
'text': obj['info'][1],
|
'text': info[1],
|
||||||
'emots': jsonDecode(obj['info'][0][15]['extra'])['emots'],
|
'emots': extra['emots'],
|
||||||
'uemote': obj['info'][0][13],
|
'uemote': first[13],
|
||||||
});
|
});
|
||||||
Map json = jsonDecode(obj['info'][0][15]['extra']);
|
|
||||||
if (showDanmaku) {
|
if (showDanmaku) {
|
||||||
controller?.addDanmaku(
|
controller?.addDanmaku(
|
||||||
DanmakuContentItem(
|
DanmakuContentItem(
|
||||||
json['content'],
|
extra['content'],
|
||||||
color: DmUtils.decimalToColor(json['color']),
|
color: DmUtils.decimalToColor(extra['color']),
|
||||||
type: DmUtils.getPosition(json['mode']),
|
type: DmUtils.getPosition(extra['mode']),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
WidgetsBinding.instance.addPostFrameCallback(
|
WidgetsBinding.instance
|
||||||
(_) => scrollToBottom(),
|
.addPostFrameCallback((_) => scrollToBottom());
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import 'dart:convert';
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'dart:typed_data';
|
import 'dart:typed_data';
|
||||||
|
|
||||||
import 'package:PiliPlus/pages/mine/controller.dart';
|
|
||||||
import 'package:PiliPlus/services/loggeer.dart';
|
import 'package:PiliPlus/services/loggeer.dart';
|
||||||
import 'package:brotli/brotli.dart';
|
import 'package:brotli/brotli.dart';
|
||||||
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||||||
@@ -194,18 +193,16 @@ class LiveMessageStream {
|
|||||||
Future<WebSocket> getSocket() async {
|
Future<WebSocket> getSocket() async {
|
||||||
for (final server in servers) {
|
for (final server in servers) {
|
||||||
try {
|
try {
|
||||||
return WebSocket.connect(
|
return WebSocket.connect(server);
|
||||||
server,
|
|
||||||
headers: MineController.anonymity.value ? {'cookie': ''} : null,
|
|
||||||
);
|
|
||||||
} catch (_) {}
|
} catch (_) {}
|
||||||
}
|
}
|
||||||
throw Exception("all servers connect failed");
|
throw Exception("all servers connect failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
socket = await getSocket();
|
socket = await getSocket();
|
||||||
// logger.d('$logTag ===> TCP连接建立');
|
// logger
|
||||||
// logger.d('$logTag ===> 发送认证包');
|
// ..d('$logTag ===> TCP连接建立')
|
||||||
|
// ..d('$logTag ===> 发送认证包');
|
||||||
_socketSubscription = socket?.listen(
|
_socketSubscription = socket?.listen(
|
||||||
(data) {
|
(data) {
|
||||||
PackageHeader? header = PackageHeader.fromBytesData(data);
|
PackageHeader? header = PackageHeader.fromBytesData(data);
|
||||||
|
|||||||
Reference in New Issue
Block a user