3 ms·
And kill browsers... ws.onmessage = function(event) { Object.keys(cursors).forEach((id) => { if (!positions.find((pos) => pos.id === id)) {
by yetihehe 3y ago
And kill browsers...
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?
- Hexagon56k 3y agoIt was just a quickie for fun, but maybe I should look into that
- spdustin 3y agoYeah, I’d maybe make a set of just the position IDs, and do a negated .has() of that set to check if the cursor was removed. 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
- Hexagon56k 3y agoAny code written on a phone is impressive ^^ Will try it out
- Hexagon56k 3y agoImplemented and working, should probably move this whole thing outside ws.onmessage too, could be run every fifth second or so.