<iframe src="the url" width="50%" height="50%">
<iframe src="the url" width="50%" height="50%">
<iframe src="the url" width="50%" height="50%">
<iframe src="the url" width="50%" height="50%">
There's also the <frameset> and <frame> tags to divide pages between URLs.Maybe use electron or something?
> It is a pure SPA, you just have the option of opening multiple instances at the same time. Like I can open gmail in two tabs, but it's still an SPA.
Gmail just runs the UI in the browser though, the actual work of processing, receiving and sending mail is not done in a tab. The tabs are just views into the system.
It sounds like you are having one tab as both the client and the server, and separate tabs as clients to that other tab, which is pretty edge case.
As someone else suggested, you could move the processing to the server, but I imagine that's not feasible because then you are centralizing the processing and you're paying for processing, not the people visiting.
The more appropriate way to architect this (to my eyes, so take it for whatever you think it's worth) would be to use JS to manage tabs within the application (which you mentioned elsewhere already). The really simple way to implement this might be to have the JS tabs just contain an iframe to the prior implementation's real separate tab URL (since it already works that way, there's not likely to be any security issues you have to deal with).
I prefer Firefox, but since Google broke Google Voice (now Hangouts) plugin for FF users, I've been grudgingly opening a Chrome browser each time I want to make a phone call to US number.
Unless I'm supposed to re-implement tabs within my single page application and then force it to only let one tab run, which I guess is possible but horrible :)
If you have several tabbed views, then you would include tabs in your application.
And yeah tabs in JS are possible and I might go down that route, it'll just be a lot of extra work to replicate a UI that already exists fine.
Opening another tab creates a new bakery, not a view into the same bakery. (This only works if you haven't played before or clear your cookies.)
Edit:
If you really want to keep the same functionality then you would need to bring server communication into the mix. It's possible to either run the simulation server-side, or at least communicate the state between tabs using a server.
If you send an email in one Gmail window and it shows up in the other window, then I would guess it receives a message from the server to update.
but chrome does not like that and is always nagging and trying to trick you into installing the latest versions.
i looks like we will have to package it as electron app.
Would it be possible to just declare "Best played in Firefox?" It's a bit gauche, but if a browser's engine has a behavior that isn't really compatible with what you intend to do, that's the browser's fault.
</sarcasm>
Cost is a real concern for these things. The tradeoff is running things on client or expensive backend or spending ages building a custom, efficient backend.