|
@@ -52,8 +52,10 @@ const runtime = reactive({
|
|
|
lastLikeCount: 0,
|
|
|
/** 当前活跃的数据流 */
|
|
|
activeTracks: {} as ActiveTracks,
|
|
|
- /** 是否允许连麦 */
|
|
|
+ /** 是否关闭连麦 */
|
|
|
allowSeatsCtrl: true,
|
|
|
+ /** 是否关闭发言 */
|
|
|
+ allowChatCtrl: true,
|
|
|
/** 当前设备获取状态 */
|
|
|
deviceStatus: {
|
|
|
microphone: 'init',
|
|
@@ -101,7 +103,7 @@ const Events = RongIMLib.Events
|
|
|
*/
|
|
|
const { MESSAGES, ...RestMessage } = Events
|
|
|
RongIMLib.addEventListener(Events.MESSAGES, (evt: MessageEvent) => {
|
|
|
- // console.log(evt, '收到消息')
|
|
|
+ console.log(evt, '收到消息')
|
|
|
const { messages } = evt
|
|
|
for (const message of messages) {
|
|
|
// console.log(LIVE_EVENT_MESSAGE[message.messageType], message)
|
|
@@ -273,7 +275,7 @@ export const getTrack = async (trackType: TrackType): Promise<RTC.RCLocalTrack>
|
|
|
export const setTrack = async (tracks: RTC.RCLocalTrack[], trackType: TrackType, needPublish = true) => {
|
|
|
for (const track of tracks) {
|
|
|
// @ts-ignore
|
|
|
- await runtime.mediaStreams?.addTrack(track._msTrack)
|
|
|
+ // await runtime.mediaStreams?.addTrack(track._msTrack)
|
|
|
runtime.activeTracks[trackType] = track
|
|
|
}
|
|
|
if (needPublish) {
|
|
@@ -287,7 +289,10 @@ export const setTrack = async (tracks: RTC.RCLocalTrack[], trackType: TrackType,
|
|
|
export const removeTrack = async (tracks: RTC.RCLocalTrack[], trackType: TrackType, needPublish = true) => {
|
|
|
for (const track of tracks) {
|
|
|
// @ts-ignore
|
|
|
- await runtime.mediaStreams?.removeTrack(track._msTrack)
|
|
|
+ // await runtime.mediaStreams?.removeTrack(track._msTrack)
|
|
|
+ // runtime.activeTracks[trackType].destroy()
|
|
|
+ // console.log(runtime.activeTracks[trackType])
|
|
|
+ // track.destroy()
|
|
|
runtime.activeTracks[trackType] = null
|
|
|
}
|
|
|
if (needPublish) {
|
|
@@ -398,3 +403,37 @@ export const sendMessage = async (msg: any, type: SendMessageType = 'text') => {
|
|
|
console.log(msg)
|
|
|
await RongIMLib.sendMessage(conversation, message)
|
|
|
}
|
|
|
+
|
|
|
+export const toggleMicrophone = async () => {
|
|
|
+ if (runtime.videoStatus === 'liveing' && runtime.joinedRoom) {
|
|
|
+ if (runtime.activeTracks['microphone']) {
|
|
|
+ await removeTrack([runtime.activeTracks['microphone']] as RTC.RCLocalTrack[], 'microphone')
|
|
|
+ } else {
|
|
|
+ const track = await getTrack('microphone')
|
|
|
+ await setTrack([track], 'microphone')
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+export const toggleCamera = async () => {
|
|
|
+ const track = runtime.activeTracks['camera']
|
|
|
+ console.log(track)
|
|
|
+ if (track) {
|
|
|
+ if (runtime.videoStatus === 'liveing') {
|
|
|
+ await removeTrack([track] as RTC.RCLocalTrack[], 'camera')
|
|
|
+ }
|
|
|
+ track.destroy()
|
|
|
+ if (runtime.videoRef) {
|
|
|
+ // console.log(runtime.videoRef.srcObject.removeTrack(runtime.videoRef.srcObject?.getVideoTracks?.()[0]))
|
|
|
+ // runtime.videoRef.srcObject = null
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ const track = await getTrack('camera')
|
|
|
+ if (runtime.videoStatus === 'liveing') {
|
|
|
+ await setTrack([track], 'camera')
|
|
|
+ }
|
|
|
+ if (runtime.videoRef) {
|
|
|
+ track.play(runtime.videoRef)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|