6 ms·
I agree. Unfortunately you can only have 6 SSE streams per origin per browser instance, so you may be limited to 6 tabs without adding extra complexity on the c
by ajvpot 3y ago
I agree. Unfortunately you can only have 6 SSE streams per origin per browser instance, so you may be limited to 6 tabs without adding extra complexity on the client side.
https://crbug.com/275955 https://crbug.com/275955
- simonw 3y agoIs that true if you are using HTTP/2?
- cassepipe 3y agoNope. That's only a problem with HTTP/1.1
- hobobaggins 3y agoYes, but the limit is different (usually much higher) and negotiated, up to maximum SETTINGS_MAX_CONCURRENT_STREAMS (which is fixed at 100 in Chrome, and apparently less in IOS/Safari.)
- andrewmutz 3y agoYou can get around that limit using domain sharding, although it feels a bit hacky.
- TheP1000 3y agoIs above still an issue with http2/3? edit: From the article: To workaround the limitation you have to use HTTP/2 or HTTP/3 with which the browser will only open a single connection per domain and then use multiplexing to run all data through a single connection.
- gorjusborg 2y agoNo, if you can enable TLS and HTTP/2|3, you are only technically using a single browser connection, onto which multiple logical connections can be multiplexed. I think the article calls this out. There is still a limit on the number of logical connections, but it's an order of magnitude larger.
- ravxx 3y agojust use a service worker to share state, you would be much better off doing this anyways. saves a ton and is performant.
- simonw 3y agoI think you need a SharedWorker for that rather than a service worker https://developer.mozilla.org/en-US/docs/Web/API/SharedWorker https://developer.mozilla.org/en-US/docs/Web/API/SharedWorke...
- jedschmidt 3y agoA service worker would work fine; the connection would be instantiated from the SW and each window/worker could communicate with it via navigator.serviceWorker.
- esprehn 3y agoThat doesn't work because browsers have duration limits on ServiceWorkers: https://github.com/w3c/ServiceWorker/issues/980#issuecomment-782094985 https://github.com/w3c/ServiceWorker/issues/980#issuecomment... Also unfortunately Chrome doesn't keep SharedWorker alive after a navigation (Firefox and Safari do): https://issues.chromium.org/issues/40284712 https://issues.chromium.org/issues/40284712 Hopefully Chrome will fix this eventually, it really makes it hard to build performant MPAs.
- jedschmidt 3y agoIn my experience, as long as a controlled window is communicating with the SW, the connection will remain alive.
- nchmy 2y agoShared workers (inexplicably) dont exist on Android Chrome https://issues.chromium.org/issues/40290702 https://issues.chromium.org/issues/40290702
- nine_k 3y agoCan the tabs share a background worker that would handle that?
- merb 3y agoYou can use https://www.npmjs.com/package/broadcast-channel https://www.npmjs.com/package/broadcast-channel which creates a tab leader, no need for a background worker Edit: of course you could use: https://caniuse.com/sharedworkers https://caniuse.com/sharedworkers but android does not support it. We migrated to the lib because safari took its time… so mobile was/is not a thing for us
- nchmy 2y agoHere's the chrome android issue for Shared Workers. Add your voice if it is something you need https://issues.chromium.org/issues/40290702 https://issues.chromium.org/issues/40290702
- paulddraper 3y agoHTTP 2/3 doesn't have they limitation. For HTTP 1, simply shard the domain.
- xialvjun 3y agojust one tab use SSE and others use storage event.