Hacker News new | ask | show | jobs
by yetihehe 1022 days 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?
1 comments

It was just a quickie for fun, but maybe I should look into that
Yeah, 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
Implemented and working, should probably move this whole thing outside ws.onmessage too, could be run every fifth second or so.
Any code written on a phone is impressive ^^ Will try it out