Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

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



Is 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.


No, 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.


just use a service worker to share state, you would be much better off doing this anyways. saves a ton and is performant.


I think you need a SharedWorker for that rather than a service worker https://developer.mozilla.org/en-US/docs/Web/API/SharedWorke...


Shared workers (inexplicably) dont exist on Android Chrome

https://issues.chromium.org/issues/40290702


A service worker would work fine; the connection would be instantiated from the SW and each window/worker could communicate with it via navigator.serviceWorker.


That doesn't work because browsers have duration limits on ServiceWorkers:

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

Hopefully Chrome will fix this eventually, it really makes it hard to build performant MPAs.


In my experience, as long as a controlled window is communicating with the SW, the connection will remain alive.


HTTP 2/3 doesn't have they limitation.

For HTTP 1, simply shard the domain.


You can get around that limit using domain sharding, although it feels a bit hacky.


just one tab use SSE and others use storage event.


Can the tabs share a background worker that would handle that?


You can use 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 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


Here's the chrome android issue for Shared Workers. Add your voice if it is something you need

https://issues.chromium.org/issues/40290702


Is that true if you are using HTTP/2?


Yes, 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.)


Nope. That's only a problem with HTTP/1.1




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: