Would work quite well i think, at last if deployed to deno deploy
ws.onmessage = function(event) {
Object.keys(cursors).forEach((id) => {
if (!positions.find((pos) => pos.id === id)) {
document.body.removeChild(cursors[id]);
delete cursors[id];
}
});
If I'm not mistaken, this has O(n^2) complexity and is executed on EACH position update. Unless it's autooptimized to not be a linear search on positions? ws.onmessage = function(event) {
const positionIds = new Set(positions.map(pos => pos.id));
Object.keys(cursors).forEach((id) => {
if (!positionIds.has(id)) {
document.body.removeChild(cursors[id]);
delete cursors[id];
}
});
};
Untested but that’s probably pretty close for phone typing