gpt4 book ai didi

node.js - 如何在Socket.io客户端中丢弃传入事件

转载 作者:行者123 更新时间:2023-12-03 12:07:17 24 4
gpt4 key购买 nike

嗨,我正在尝试制作一个跟踪器应用程序,并且我正在将socket.io用于服务器和客户端。在我的客户端应用程序上,无论何时浏览器不被关注,我都想忽略message事件。我的代码对于客户端应用程序是这样的:

const socket = io('http://localhost:4000');
const [browserState, setBrowserState] = useState('');
useEffect(() => {
socket.on('connect', () => {
console.log('connected');
socket.on("message", payload => {
//payload need to be passed to Map component
console.log(payload);
});
});
},[]);

useEffect(() => {
document.onvisibilitychange = function(){
setBrowserState(document.visibilityState)
}
if(browserState === 'hidden') socket.volatile.emit("message", payload => payload)
},[browserState]);
在我的服务器上只是:
io.on('connection', socket => {
socket.on('message', (payload)=>{
console.log(payload)
io.emit('message', payload)
});
问题在客户端,代码为 socket.volatile.emit("message", payload => payload)。如果我使用 socket.volatile.on可以正常工作。但我仍然在客户端上收到 message事件。如果我使用 socket.volatile.emit,则服务器崩溃。
附加问题:如果我的客户端 io.protocol = 5和我的服务器是 io.protocol = 4,可以吗?
我真的是新来的。请指教。 :) 谢谢!

最佳答案

by通过不回复传入的套接字,可以很容易地将其丢弃

io.on('connection', socket => {
socket.on('message', (payload)=>{
console.log(payload)
// removed this line io.emit('message', payload)
});

关于node.js - 如何在Socket.io客户端中丢弃传入事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65589456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com