This commit is contained in:
eric
2025-08-01 08:24:09 +08:00
parent 8a227785d1
commit 745e786fcd

View File

@@ -30,25 +30,24 @@ const Index = () => {
// WebSocket 接收到消息时触发 // WebSocket 接收到消息时触发
socket.onmessage = (event) => { socket.onmessage = (event) => {
console.log("接收到消息:", event.data); try {
setMessage(event.data); // 更新消息状态 const data = JSON.parse(event.data);
if (event.data.includes("聊天msg")) {
if (event.data?.includes("11")) { if (data.type === "join") {
const user = data.data; // 就是你后端推送的 user_data 字典
console.log("✅ 新观众进场:", user);
// ✅ 举例使用
setMessage(`${user.user_name} 进入了直播间`);
speak(`${user.user_name} 进入了直播间`);
setStatus("1"); setStatus("1");
setTimeout(() => {
setStatus("0"); setMessageArr((arr) => [`${user.user_name} 进入了直播间`, ...arr]);
}, 1000); // 2秒后恢复
}
if (event.data?.includes("22")) {
setStatus("2");
setTimeout(() => {
setStatus("0");
}, 5000); // 2秒后恢复
} }
} catch (e) {
console.log("❌ 非 JSON 消息:", event.data);
} }
// TTS播放
// speak(event.data);
setMessageArr((messageArr) => [event.data, ...messageArr]); // 更新消息数组
}; };
// WebSocket 关闭时触发 // WebSocket 关闭时触发
@@ -122,26 +121,26 @@ const Index = () => {
// const env = Taro.getEnv() // const env = Taro.getEnv()
// if (env !== Taro.ENV_TYPE.WEB) return // if (env !== Taro.ENV_TYPE.WEB) return
const innerAudioContext = Taro.createInnerAudioContext() const innerAudioContext = Taro.createInnerAudioContext();
innerAudioContext.src = baby innerAudioContext.src = baby;
innerAudioContext.loop = true innerAudioContext.loop = true;
const handlePlay = () => { const handlePlay = () => {
innerAudioContext.play() innerAudioContext.play();
console.log('尝试播放音频') console.log("尝试播放音频");
document.removeEventListener('touchstart', handlePlay) document.removeEventListener("touchstart", handlePlay);
document.removeEventListener('click', handlePlay) document.removeEventListener("click", handlePlay);
} };
document.addEventListener('touchstart', handlePlay, { once: true }) document.addEventListener("touchstart", handlePlay, { once: true });
document.addEventListener('click', handlePlay, { once: true }) document.addEventListener("click", handlePlay, { once: true });
return () => { return () => {
document.removeEventListener('touchstart', handlePlay) document.removeEventListener("touchstart", handlePlay);
document.removeEventListener('click', handlePlay) document.removeEventListener("click", handlePlay);
innerAudioContext.destroy() innerAudioContext.destroy();
} };
}, []) }, []);
// 在线测试地址 // 在线测试地址
// http://wstool.jackxiang.com/ // http://wstool.jackxiang.com/
@@ -193,8 +192,6 @@ const Index = () => {
<source src={testmpkv} type="video/mp4"></source> <source src={testmpkv} type="video/mp4"></source>
</video> </video>
</View> */} </View> */}
</View> </View>
); );
}; };