<feed xmlns='http://www.w3.org/2005/Atom'>
<title>webao/webAO/client/sender/sendCheck.ts, branch master</title>
<subtitle>WebAO fork</subtitle>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/webao/'/>
<entry>
<title>Remove CH-sending timer</title>
<updated>2026-04-18T16:52:22+00:00</updated>
<author>
<name>Osmium Sorcerer</name>
<email>os@sof.beauty</email>
</author>
<published>2026-03-16T14:12:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/webao/commit/?id=2ef41402209b82279656ae4b1affe6484be1ed77'/>
<id>2ef41402209b82279656ae4b1affe6484be1ed77</id>
<content type='text'>
CH is an application-level keepalive packet that clients periodically
send for two reasons:

1. It tells the server they're still connected, preventing timeouts.

2. By measuring latency between sending CH and receiving CHECK, a client
   can display ping.

Keepalive is redundant because WebSocket can handle that via PING frames on a
transport layer. WebAO also completely ignores CHECK and sends CH every
five seconds, which is superfluous (AO2 Client sends it once every 45
seconds, in comparison).

Sending CH via `setInterval` was also problematic: browsers seem to
throttle it when the tab becomes inactive, preventing periodic pings and
leading to the server disconnecting inactive browser clients.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CH is an application-level keepalive packet that clients periodically
send for two reasons:

1. It tells the server they're still connected, preventing timeouts.

2. By measuring latency between sending CH and receiving CHECK, a client
   can display ping.

Keepalive is redundant because WebSocket can handle that via PING frames on a
transport layer. WebAO also completely ignores CHECK and sends CH every
five seconds, which is superfluous (AO2 Client sends it once every 45
seconds, in comparison).

Sending CH via `setInterval` was also problematic: browsers seem to
throttle it when the tab becomes inactive, preventing periodic pings and
leading to the server disconnecting inactive browser clients.
</pre>
</div>
</content>
</entry>
<entry>
<title>Prettified Code!</title>
<updated>2024-11-20T13:31:50+00:00</updated>
<author>
<name>stonedDiscord</name>
<email>stonedDiscord@users.noreply.github.com</email>
</author>
<published>2024-11-20T13:31:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/webao/commit/?id=6684f3fce6e90fd0574d7bab63b629554ab03ef6'/>
<id>6684f3fce6e90fd0574d7bab63b629554ab03ef6</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>I'm so sorry</title>
<updated>2022-09-09T02:20:32+00:00</updated>
<author>
<name>Caleb</name>
<email>caleb.mabry.15@cnu.edu</email>
</author>
<published>2022-09-09T02:20:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.sof.beauty/webao/commit/?id=776fe2f4241a67be354908df546f300f413a7d42'/>
<id>776fe2f4241a67be354908df546f300f413a7d42</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
