-
Notifications
You must be signed in to change notification settings - Fork 48
Sketch for implementing sessions with flattened protocol. #109
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
base: main
Are you sure you want to change the base?
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 |
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
|
@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. |
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
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
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
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
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
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
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
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
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
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
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: