Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.
Issue 226931 Tracking New WebSocket implementation in Chromium net/
Starred by 25 users Project Member Reported by ricea@chromium.org, Apr 5 2013 Back to list
Status: Fixed
Owner:
Closed: Aug 2015
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 2
Type: Feature


Sign in to add a comment
Tracking bug for the new WebSocket implementation under net/.

Design doc (very old): https://docs.google.com/a/google.com/document/d/11n3hpwb9lD9YVqnjX3OwzE_jHgTmKIqd6GvXE9bDGUg/edit
 
Blockedon: chromium:226933
Cc: yhirano@chromium.org
Issue 226933:	Create a runtime switch for WebSocket implementation

Project Member Comment 2 by bugdroid1@chromium.org, Apr 5 2013
Labels: Cr-Blink
Project Member Comment 3 by bugdroid1@chromium.org, Apr 6 2013
Labels: -Cr-Content-WebSockets Cr-Blink-WebSockets
Comment 4 Deleted
Comment 5 by ricea@chromium.org, Apr 12 2013
Rough task list. Issues will be created for individual tasks as they are started.

* Implement WebSocketChannel
* Implement plain unencrypted WebSocketStream implementation
* Add prototype protocol bootstrapping code to HTTPRequestFactoryImpl, etc. 
* Add flag to switch on the new implementation [Issue 226933]
* Make sure the new implementation can be compiled out when net/ is used as a standalone library
* Create an implementation of WebSocket in Blink that uses the new IPCs
* Refactor the protocol bootstrapping
* Land the first implementation
* Implement SSL WebSocketStream
* Implement mux and mux/SSL WebSocketStream
* Implement SPDY2 and SPDY3 WebSocketStream
* Implement permessage-deflate compression extension
* Implement RFC6455-compliant throttling
* Make protocol logging, error reporting and metrics the same as existing implementation
* Make Chromium tests pass with the flag enabled
* Migrate other (non-renderer) internal users off the old implementation
* Remove the old implementation
Comment 6 by ricea@chromium.org, Apr 12 2013
Issue 230756: Implement WebSocketChannel
Blockedon: chromium:237095
Blockedon: chromium:237444
Comment 9 by ricea@chromium.org, May 2 2013
Blockedon: chromium:237496
Blockedon: chromium:239376
Blockedon: -chromium:239376 chromium:118268
Blockedon: chromium:239722
Comment 13 by ricea@chromium.org, May 17 2013
Blockedon: chromium:241811
Comment 14 by ricea@chromium.org, Jun 25 2013
Blockedon: chromium:253812
Blockedon: chromium:257680
Comment 16 by ricea@chromium.org, Jul 23 2013
Blocking: chromium:123862
Comment 17 by ricea@chromium.org, Jul 29 2013
Blockedon: chromium:265329
Comment 18 by ricea@chromium.org, Aug 14 2013
Blocking: chromium:112089
Comment 19 by ricea@chromium.org, Aug 14 2013
Blocking: chromium:180504
Comment 20 by ricea@chromium.org, Aug 14 2013
Blocking: chromium:120553
Comment 21 by ricea@chromium.org, Aug 14 2013
Blocking: chromium:129353
Comment 22 by ricea@chromium.org, Aug 14 2013
Blocking: chromium:169448
Comment 23 by ricea@chromium.org, Aug 26 2013
Blockedon: chromium:279103
Blockedon: chromium:280910
Comment 25 by ricea@chromium.org, Sep 30 2013
Blockedon: chromium:301353
Blockedon: chromium:303568
Blockedon: chromium:310405
Project Member Comment 28 by bugdroid1@chromium.org, Oct 30 2013
------------------------------------------------------------------------
r231707 | tyoshino@chromium.org | 2013-10-30T01:37:22.253882Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/websockets/websocket_handshake_handler.cc?r1=231707&r2=231706&pathrev=231707
   M http://src.chromium.org/viewvc/chrome/trunk/src/net/websockets/websocket_handshake_handler.h?r1=231707&r2=231706&pathrev=231707

Factor out Sec-WebSocket-Accept computing logic so that the new WebSocket handshake processor can reuse it.

BUG= 226931 

Review URL: https://codereview.chromium.org/48733008
------------------------------------------------------------------------
Blockedon: chromium:316525
Comment 30 by ricea@chromium.org, Jan 23 2014
Blockedon: chromium:337134
Project Member Comment 31 by bugdroid1@chromium.org, Apr 8 2014
------------------------------------------------------------------
r262325 | yhirano@chromium.org | 2014-04-08T05:16:26.425368Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_process_host_impl.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/app/generated_resources.grd?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/webpreferences.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/renderer/web_preferences.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/webkit/common/webpreferences.h?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/content_switches.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/common_param_traits_macros.h?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/public/common/content_switches.h?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/about_flags.cc?r1=262325&r2=262324&pathrev=262325
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_view_host_impl.cc?r1=262325&r2=262324&pathrev=262325

Delete "Experimental WebSocket" flag from chrome://flags.

It's now managed by RuntimeEnabledFeatures in Blink.

BUG= 226931 

Review URL: https://codereview.chromium.org/225263004
-----------------------------------------------------------------
Project Member Comment 32 by bugdroid1@chromium.org, Apr 9 2014
The following revision refers to this bug:
  http://src.chromium.org/viewvc/blink?view=rev&rev=171104

------------------------------------------------------------------
r171104 | yhirano@chromium.org | 2014-04-09T03:05:15.897971Z

Changed paths:
   M http://src.chromium.org/viewvc/blink/trunk/Source/platform/RuntimeEnabledFeatures.in?r1=171104&r2=171103&pathrev=171104

Enable ExperimentalWebSocket under "Experimental Web Platform Features".

Since most of layout tests pass, I would like to expose it for
experimental users.

BUG= 226931 
R=tkent@chromium.org

Review URL: https://codereview.chromium.org/228033003
-----------------------------------------------------------------
Comment 33 by ricea@chromium.org, May 26 2014
Blocking: chromium:174956
Blocking: chromium:381035
Labels: -Cr-Blink M-37
Labels: -M-37 M-38
Blink 175580 ("Turn on the new WebSocket implementation by default") is going to be released for M38 (reverted for M37. crbug.com/381035).
It appears that M38 introduced a breaking change  -- I'm seeing binary web socket frames getting truncated to around 130,000 bytes.  My app, which worked prior to M38 sends a 145,708 byte binary frame and it arrives at the server side as a 130,880 byte frame.  This does not happen in Firefox or in M37.


Comment 38 by ricea@chromium.org, Oct 10 2014
bryandonnovan, a WebSocket message is composed of one or more frames. See RFC 6455 section 5.4. The old WebSocket implementation always sent messages in a single frame. To improve scalability, the new implementation may split a message into multiple frames. Usually large messages will be split into 128KB frames.

Your server needs to reassemble fragmented messages.

Incidentally, we recommend that web developers test with the dev channel of Chrome to avoid any nasty surprises. It's available here: https://www.google.com/chrome/browser/index.html?extra=devchannel
Blockedon: chromium:423200
Blockedon: chromium:423201
Can we close this? Maybe we have some remaining tasks but maybe they don't need this home.
Okay with me.
Status: Fixed
Thanks again for bunch of work to get this done, guys.
Comment 44 by tkent@chromium.org, Nov 27 2015
Labels: Cr-Blink-Network-WebSockets
Comment 45 by tkent@chromium.org, Nov 27 2015
Labels: -Cr-Blink-WebSockets
Sign in to add a comment