Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Experiment with long polling in ODSP driver #7964

Closed
Tracked by #8838 ...
vladsud opened this issue Oct 23, 2021 · 2 comments
Closed
Tracked by #8838 ...

Experiment with long polling in ODSP driver #7964

vladsud opened this issue Oct 23, 2021 · 2 comments
Assignees
Labels
ado Issue is tracked in the internal Azure DevOps backlog bug Something isn't working status: stale

Comments

@vladsud
Copy link
Contributor

vladsud commented Oct 23, 2021

This issue is result of us learning that some tenants might be blocking websocket connections by inspecting traffic (going through their proxies) and disabling websocket upgrade of http connection by dropping some headers.

In such case the product fails by showing disconnected banner and losing user local changes.

It would be great to better understand

  • how we can reliable identify such cases, and possibly fail with unique error code allowing hosts to show detailed error message to the user (possibly by validating that we could connect to relay service using long polling).
  • potentially use long polling (built into socket.io library as one of the protocols) as a fallback.
    • Need to better understand impact on client and server, i.e. drop in latencies and CPU impact on relay service.

One important thing to note is that if both websocket and long-polling protocols are enabled, socket.io will use long-polling as a first protocol. That's likely not what we want, so the flow should be - attempt to connect via websocket protocol, and if it fails - fall back to long-polling.

It would likely look similar to how AFD fallback looked like before (PR #5987 can be used to look into old structure).

Here is where we encode transport:

Useful article to look into: https://socket.io/docs/v3/how-it-works/#upgrade-mechanism

@vladsud
Copy link
Contributor Author

vladsud commented Feb 1, 2022

See #8820 for addition of capability on client side.

@curtisman curtisman added the ado Issue is tracked in the internal Azure DevOps backlog label Jun 20, 2022
@microsoft-github-policy-service
Copy link
Contributor

This PR has been automatically marked as stale because it has had no activity for 60 days. It will be closed if no further activity occurs within 8 days of this comment. Thank you for your contributions to Fluid Framework!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ado Issue is tracked in the internal Azure DevOps backlog bug Something isn't working status: stale
Projects
None yet
Development

No branches or pull requests

3 participants