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