mirror of
https://github.com/thilo-behnke/wasm-pong.git
synced 2026-07-28 10:41:11 +00:00
don't send heartbeat in menu + don't send snapshot for peer if objects change
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
let cachedSessionId;
|
||||
let relevantKeyboardEvents: Readable<Input[]>;
|
||||
|
||||
// TODO: objects must come from events for peer and observer
|
||||
|
||||
$: if(!cachedSessionId && session) {
|
||||
cachedSessionId = session.session_id;
|
||||
console.log("NetworkSessionWrapper ready, now setting up sessionEvents")
|
||||
@@ -24,21 +26,17 @@
|
||||
relevantKeyboardEvents = getPlayerKeyboardInputs(session.you.nr);
|
||||
}
|
||||
|
||||
$: if(session && session.state === SessionState.RUNNING) {
|
||||
// TODO: Include objects
|
||||
switch(session.type) {
|
||||
case SessionType.HOST:
|
||||
console.debug("sending host snapshot")
|
||||
networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, objects: $gameField, player_id: session.you.id, ts: Date.now()})
|
||||
break;
|
||||
case SessionType.PEER:
|
||||
console.debug("sending peer snapshot")
|
||||
networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, player_id: session.you.id, ts: Date.now()})
|
||||
break;
|
||||
default:
|
||||
// noop
|
||||
}
|
||||
$: if(session && session.type === SessionType.HOST && session.state === SessionState.RUNNING) {
|
||||
console.debug("sending host snapshot")
|
||||
networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, objects: $gameField, player_id: session.you.id, ts: Date.now()})
|
||||
}
|
||||
|
||||
// TODO: keyboard events must be sent every tick, not only if a key is pressed
|
||||
$: if(session && session.type === SessionType.PEER && session.state === SessionState.RUNNING) {
|
||||
console.debug("sending host snapshot")
|
||||
networkEvents.produce({inputs: $relevantKeyboardEvents, session_id: session.session_id, player_id: session.you.id, ts: Date.now()})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
{#if !session}
|
||||
|
||||
@@ -58,13 +58,17 @@ function createNetworkEvents() {
|
||||
})
|
||||
|
||||
const interval = setInterval(() => {
|
||||
const cachedSessionId = get(sessionId);
|
||||
if (!cachedSessionId) {
|
||||
return;
|
||||
}
|
||||
const last = get(lastSnapshot);
|
||||
const now = Date.now();
|
||||
if (last && now - last.ts < 1_000) {
|
||||
return
|
||||
}
|
||||
console.debug("sending heartbeat")
|
||||
const heartbeat: Message = {msg_type: MessageType.Heartbeat, payload: {session_id: get(sessionId), player_id: get(playerId), ts: now}};
|
||||
const heartbeat: Message = {msg_type: MessageType.Heartbeat, payload: {session_id: cachedSessionId, player_id: get(playerId), ts: now}};
|
||||
sendMessage(heartbeat);
|
||||
}, 1_000)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user