如何丢弃 Socket.io-client 中的传入事件
How to discard incoming event in Socket.io-client
你好,我正在尝试制作一个跟踪器应用程序,我正在为服务器和客户端使用 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
可以吗?
我对此很陌生。请指教。 :) 谢谢!
通过不回复传入的套接字可以轻松丢弃它
io.on('connection', socket => {
socket.on('message', (payload)=>{
console.log(payload)
// removed this line io.emit('message', payload)
});
你好,我正在尝试制作一个跟踪器应用程序,我正在为服务器和客户端使用 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
可以吗?
我对此很陌生。请指教。 :) 谢谢!
通过不回复传入的套接字可以轻松丢弃它
io.on('connection', socket => {
socket.on('message', (payload)=>{
console.log(payload)
// removed this line io.emit('message', payload)
});