Sketch for implementing sessions with flattened protocol.#109
Open
powdercloud wants to merge 3 commits into
Open
Sketch for implementing sessions with flattened protocol.#109powdercloud wants to merge 3 commits into
powdercloud wants to merge 3 commits into
Conversation
Codecov Report
@@ Coverage Diff @@
## master #109 +/- ##
========================================
- Coverage 90.6% 84.4% -6.2%
========================================
Files 15 15
Lines 896 1020 +124
========================================
+ Hits 812 861 +49
- Misses 55 126 +71
- Partials 29 33 +4 |
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add WithSession to rpcc.Conn for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
Owner
|
@powdercloud Hey! It's been a very long time and I'm sorry I never got around to giving you proper feedback on this PR. I really appreciate you putting in the effort and presenting this sketch. I decided to take a slightly different approach than what's done here in #154, but having this reference was very helpful. At the risk of being "too little, too late", if this is this relevant to you I would be stoked if you had time to take a look. |
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add WithSession to rpcc.Conn for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add WithSession to rpcc.Conn for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add WithSession to rpcc.Conn for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add WithSession to rpcc.Conn for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add rpcc.NewSession for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add rpcc.NewSession for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add rpcc.NewSession for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add rpcc.NewSession for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add rpcc.NewSession for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
mafredri
added a commit
that referenced
this pull request
Dec 7, 2025
Chrome is deprecating non-flattened sessions (crbug.com/991325) where commands are wrapped via Target.SendMessageToTarget. Flattened mode includes the sessionId directly in the JSON-RPC message instead. Add rpcc.NewSession for creating session-scoped connections that share the parent's websocket I/O. WithSessionClose allows registering a cleanup callback for detachment. session.Manager now uses flattened mode by default, requiring Chrome 77+. WithNoFlatten opts into legacy mode for older versions. Closes #109
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi again! I made a rough sketch for the flattened protocol. It is really quite rough since I'm a novice with Go, and there are certainly some loose ends, especially around closing connections. I tried my best at keeping the integrity / design of your work intact. And upfront: thank you, I feel I learned quite a bit about how a well designed Go library looks!
The gist is, I got the unittest for the sessions in sessions_test.go to work with the flattened protocol, so this is why I figured I should post what I have thus far. If the approach in this PR is viable, I'm happy to work on fixing it / finishing it, or if you'd like to take this over that's fine too, or if some other way of getting flat sessions support makes more sense, please bring it on. Thank you. :-)
Approach taken here: