// 伪代码
<textarea v-model="text" @change="onChange"></textarea>
const text = ref('')
const onChange = (val) => {
socket.emit('send', text.value); // 如果值变化就通过websocket发送给node端
}
socket.on('getMsg', (data: any) => {
// 如果收到node端推送的就赋值给text,但是这样就会导致又处触发上面的watch,发送给node,node又推给这里,这里赋值又触发watch就死循环了
// text.value = data
console.log("服务端消息:", data);
});
请问我要实现相互推送代码思路应该是什么样的?
这里虽然是通过socket发送数据,但是你在发送的时候,还是需要将这个过程模拟成普通的发送请求的模式。
例如:做一个简单的抽象,send的时候不直接发送text.value,而是发送一个
抽象成这样之后,你在接收到消息的时候,就能通过简单的判断是不是自己发出去同步给对方的,还是接收到对方同步过来的消息。这样就能避免自己接收到自己发送出去的消息的问题。
当然,其实还有一个更简单直接的办法就是,
text.value = data
这里赋值之前先判断一下是否相等,如果相等就不要重新赋值