Scripta-Qumranica-Electronica / Scrollery-website

SQE website
MIT License
3 stars 2 forks source link

Connect multiple browser windows #70

Open Bronson-Brown-deVost opened 6 years ago

Bronson-Brown-deVost commented 6 years ago

This issue builds upon an internal project request.

We would like to not only have multiple panes within one browser window, but also the possibility to utilize multiple browser windows at the same time (for instance, using multiple screens).

The issue is how to synchronize data between windows, which we have spoken about quite a bit already. There are several possibilities.

Do we rely on local communication client-side? This can be done with local storage (see, e.g., https://stackoverflow.com/questions/28230845/communication-between-tabs-or-windows). I think there are also libraries to help with this, but then we only can synchronize data changes within one browser on one computer.

Do we use some sort of websocket or server push technology (with something like subscriptions)? There is a growing ecosystem that works on this paradigm in one way or another (Redis, Gun.js, Socket.io, subscriptions in GraphQL systems, etc.), but I am simply unaware at the moment of the capability of such systems to work with such a large dataset as ours. This sort of solution would perhaps be much more complex than sending messages with something like BroadcastChannel, but it would allow changes to be propagated to all users accessing the relevant data. Thus, you could not only use multiple browser windows, but also multiple computers, and groups could work together in realtime. This is really the sort of solution I think we want, but I am wary of how difficult it will be to implement, and the server resources that would be necessary to power it.

sjones6 commented 6 years ago

Given our recent discussion, I think that this is something important to plan for in the future but not code for just yet.

I'd like to ascertain from the broader team how the would intend to use realtime technology (just for multiple browser windows/tabs) but perhaps for collaboration with colleagues or in a classroom, etc. Once we do this discovery, we can design our features to fit this.