Unverified Commit 563338a1 authored by Danny Tuppeny's avatar Danny Tuppeny Committed by GitHub

Support WebSockets for injected client (#78961)

parent aa1df71c
...@@ -177,6 +177,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment ...@@ -177,6 +177,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
port: featureFlags.isWebEnabled ? stringArg('web-port') : '', port: featureFlags.isWebEnabled ? stringArg('web-port') : '',
webUseSseForDebugProxy: featureFlags.isWebEnabled && stringArg('web-server-debug-protocol') == 'sse', webUseSseForDebugProxy: featureFlags.isWebEnabled && stringArg('web-server-debug-protocol') == 'sse',
webUseSseForDebugBackend: featureFlags.isWebEnabled && stringArg('web-server-debug-backend-protocol') == 'sse', webUseSseForDebugBackend: featureFlags.isWebEnabled && stringArg('web-server-debug-backend-protocol') == 'sse',
webUseSseForInjectedClient: featureFlags.isWebEnabled && stringArg('web-server-debug-injected-client-protocol') == 'sse',
webEnableExposeUrl: featureFlags.isWebEnabled && boolArg('web-allow-expose-url'), webEnableExposeUrl: featureFlags.isWebEnabled && boolArg('web-allow-expose-url'),
webRunHeadless: featureFlags.isWebEnabled && boolArg('web-run-headless'), webRunHeadless: featureFlags.isWebEnabled && boolArg('web-run-headless'),
webBrowserDebugPort: browserDebugPort, webBrowserDebugPort: browserDebugPort,
...@@ -209,6 +210,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment ...@@ -209,6 +210,7 @@ abstract class RunCommandBase extends FlutterCommand with DeviceBasedDevelopment
port: featureFlags.isWebEnabled ? stringArg('web-port') : '', port: featureFlags.isWebEnabled ? stringArg('web-port') : '',
webUseSseForDebugProxy: featureFlags.isWebEnabled && stringArg('web-server-debug-protocol') == 'sse', webUseSseForDebugProxy: featureFlags.isWebEnabled && stringArg('web-server-debug-protocol') == 'sse',
webUseSseForDebugBackend: featureFlags.isWebEnabled && stringArg('web-server-debug-backend-protocol') == 'sse', webUseSseForDebugBackend: featureFlags.isWebEnabled && stringArg('web-server-debug-backend-protocol') == 'sse',
webUseSseForInjectedClient: featureFlags.isWebEnabled && stringArg('web-server-debug-injected-client-protocol') == 'sse',
webEnableExposeUrl: featureFlags.isWebEnabled && boolArg('web-allow-expose-url'), webEnableExposeUrl: featureFlags.isWebEnabled && boolArg('web-allow-expose-url'),
webRunHeadless: featureFlags.isWebEnabled && boolArg('web-run-headless'), webRunHeadless: featureFlags.isWebEnabled && boolArg('web-run-headless'),
webBrowserDebugPort: browserDebugPort, webBrowserDebugPort: browserDebugPort,
......
...@@ -862,6 +862,7 @@ class DebuggingOptions { ...@@ -862,6 +862,7 @@ class DebuggingOptions {
this.webEnableExposeUrl, this.webEnableExposeUrl,
this.webUseSseForDebugProxy = true, this.webUseSseForDebugProxy = true,
this.webUseSseForDebugBackend = true, this.webUseSseForDebugBackend = true,
this.webUseSseForInjectedClient = true,
this.webRunHeadless = false, this.webRunHeadless = false,
this.webBrowserDebugPort, this.webBrowserDebugPort,
this.webEnableExpressionEvaluation = false, this.webEnableExpressionEvaluation = false,
...@@ -878,6 +879,7 @@ class DebuggingOptions { ...@@ -878,6 +879,7 @@ class DebuggingOptions {
this.webEnableExposeUrl, this.webEnableExposeUrl,
this.webUseSseForDebugProxy = true, this.webUseSseForDebugProxy = true,
this.webUseSseForDebugBackend = true, this.webUseSseForDebugBackend = true,
this.webUseSseForInjectedClient = true,
this.webRunHeadless = false, this.webRunHeadless = false,
this.webBrowserDebugPort, this.webBrowserDebugPort,
this.cacheSkSL = false, this.cacheSkSL = false,
...@@ -936,6 +938,7 @@ class DebuggingOptions { ...@@ -936,6 +938,7 @@ class DebuggingOptions {
final bool webEnableExposeUrl; final bool webEnableExposeUrl;
final bool webUseSseForDebugProxy; final bool webUseSseForDebugProxy;
final bool webUseSseForDebugBackend; final bool webUseSseForDebugBackend;
final bool webUseSseForInjectedClient;
/// Whether to run the browser in headless mode. /// Whether to run the browser in headless mode.
/// ///
......
...@@ -51,6 +51,7 @@ typedef DwdsLauncher = Future<Dwds> Function( ...@@ -51,6 +51,7 @@ typedef DwdsLauncher = Future<Dwds> Function(
String hostname, String hostname,
bool useSseForDebugProxy, bool useSseForDebugProxy,
bool useSseForDebugBackend, bool useSseForDebugBackend,
bool useSseForInjectedClient,
bool serveDevTools, bool serveDevTools,
UrlEncoder urlEncoder, UrlEncoder urlEncoder,
bool spawnDds}); bool spawnDds});
...@@ -172,6 +173,7 @@ class WebAssetServer implements AssetReader { ...@@ -172,6 +173,7 @@ class WebAssetServer implements AssetReader {
UrlTunneller urlTunneller, UrlTunneller urlTunneller,
bool useSseForDebugProxy, bool useSseForDebugProxy,
bool useSseForDebugBackend, bool useSseForDebugBackend,
bool useSseForInjectedClient,
BuildInfo buildInfo, BuildInfo buildInfo,
bool enableDwds, bool enableDwds,
bool enableDds, bool enableDds,
...@@ -274,6 +276,7 @@ class WebAssetServer implements AssetReader { ...@@ -274,6 +276,7 @@ class WebAssetServer implements AssetReader {
enableDebugging: true, enableDebugging: true,
useSseForDebugProxy: useSseForDebugProxy, useSseForDebugProxy: useSseForDebugProxy,
useSseForDebugBackend: useSseForDebugBackend, useSseForDebugBackend: useSseForDebugBackend,
useSseForInjectedClient: useSseForInjectedClient,
serveDevTools: false, serveDevTools: false,
loadStrategy: FrontendServerRequireStrategyProvider( loadStrategy: FrontendServerRequireStrategyProvider(
ReloadConfiguration.none, ReloadConfiguration.none,
...@@ -608,6 +611,7 @@ class WebDevFS implements DevFS { ...@@ -608,6 +611,7 @@ class WebDevFS implements DevFS {
@required this.urlTunneller, @required this.urlTunneller,
@required this.useSseForDebugProxy, @required this.useSseForDebugProxy,
@required this.useSseForDebugBackend, @required this.useSseForDebugBackend,
@required this.useSseForInjectedClient,
@required this.buildInfo, @required this.buildInfo,
@required this.enableDwds, @required this.enableDwds,
@required this.enableDds, @required this.enableDds,
...@@ -626,6 +630,7 @@ class WebDevFS implements DevFS { ...@@ -626,6 +630,7 @@ class WebDevFS implements DevFS {
final UrlTunneller urlTunneller; final UrlTunneller urlTunneller;
final bool useSseForDebugProxy; final bool useSseForDebugProxy;
final bool useSseForDebugBackend; final bool useSseForDebugBackend;
final bool useSseForInjectedClient;
final BuildInfo buildInfo; final BuildInfo buildInfo;
final bool enableDwds; final bool enableDwds;
final bool enableDds; final bool enableDds;
...@@ -704,6 +709,7 @@ class WebDevFS implements DevFS { ...@@ -704,6 +709,7 @@ class WebDevFS implements DevFS {
urlTunneller, urlTunneller,
useSseForDebugProxy, useSseForDebugProxy,
useSseForDebugBackend, useSseForDebugBackend,
useSseForInjectedClient,
buildInfo, buildInfo,
enableDwds, enableDwds,
enableDds, enableDds,
......
...@@ -502,6 +502,7 @@ class ResidentWebRunner extends ResidentRunner { ...@@ -502,6 +502,7 @@ class ResidentWebRunner extends ResidentRunner {
urlTunneller: _urlTunneller, urlTunneller: _urlTunneller,
useSseForDebugProxy: debuggingOptions.webUseSseForDebugProxy, useSseForDebugProxy: debuggingOptions.webUseSseForDebugProxy,
useSseForDebugBackend: debuggingOptions.webUseSseForDebugBackend, useSseForDebugBackend: debuggingOptions.webUseSseForDebugBackend,
useSseForInjectedClient: debuggingOptions.webUseSseForInjectedClient,
buildInfo: debuggingOptions.buildInfo, buildInfo: debuggingOptions.buildInfo,
enableDwds: _enableDwds, enableDwds: _enableDwds,
enableDds: !debuggingOptions.disableDds, enableDds: !debuggingOptions.disableDds,
......
...@@ -228,6 +228,15 @@ abstract class FlutterCommand extends Command<void> { ...@@ -228,6 +228,15 @@ abstract class FlutterCommand extends Command<void> {
'some proxy servers.', 'some proxy servers.',
hide: !verboseHelp, hide: !verboseHelp,
); );
argParser.addOption('web-server-debug-injected-client-protocol',
allowed: <String>['sse', 'ws'],
defaultsTo: 'sse',
help: 'The protocol (SSE or WebSockets) to use for the injected client '
'when using the Web Server device. '
'Using WebSockets can improve performance but may fail when connecting through '
'some proxy servers.',
hide: !verboseHelp,
);
argParser.addFlag('web-allow-expose-url', argParser.addFlag('web-allow-expose-url',
defaultsTo: false, defaultsTo: false,
help: 'Enables daemon-to-editor requests (app.exposeUrl) for exposing URLs ' help: 'Enables daemon-to-editor requests (app.exposeUrl) for exposing URLs '
......
...@@ -616,6 +616,7 @@ void main() { ...@@ -616,6 +616,7 @@ void main() {
urlTunneller: null, urlTunneller: null,
useSseForDebugProxy: true, useSseForDebugProxy: true,
useSseForDebugBackend: true, useSseForDebugBackend: true,
useSseForInjectedClient: true,
nullAssertions: true, nullAssertions: true,
nativeNullAssertions: true, nativeNullAssertions: true,
buildInfo: const BuildInfo( buildInfo: const BuildInfo(
...@@ -733,6 +734,7 @@ void main() { ...@@ -733,6 +734,7 @@ void main() {
urlTunneller: null, urlTunneller: null,
useSseForDebugProxy: true, useSseForDebugProxy: true,
useSseForDebugBackend: true, useSseForDebugBackend: true,
useSseForInjectedClient: true,
nullAssertions: true, nullAssertions: true,
nativeNullAssertions: true, nativeNullAssertions: true,
buildInfo: const BuildInfo( buildInfo: const BuildInfo(
...@@ -847,6 +849,7 @@ void main() { ...@@ -847,6 +849,7 @@ void main() {
urlTunneller: null, urlTunneller: null,
useSseForDebugProxy: true, useSseForDebugProxy: true,
useSseForDebugBackend: true, useSseForDebugBackend: true,
useSseForInjectedClient: true,
buildInfo: BuildInfo.debug, buildInfo: BuildInfo.debug,
enableDwds: false, enableDwds: false,
enableDds: false, enableDds: false,
...@@ -891,6 +894,7 @@ void main() { ...@@ -891,6 +894,7 @@ void main() {
urlTunneller: null, urlTunneller: null,
useSseForDebugProxy: true, useSseForDebugProxy: true,
useSseForDebugBackend: true, useSseForDebugBackend: true,
useSseForInjectedClient: true,
nullAssertions: true, nullAssertions: true,
nativeNullAssertions: true, nativeNullAssertions: true,
buildInfo: const BuildInfo( buildInfo: const BuildInfo(
...@@ -943,6 +947,7 @@ void main() { ...@@ -943,6 +947,7 @@ void main() {
urlTunneller: null, urlTunneller: null,
useSseForDebugProxy: true, useSseForDebugProxy: true,
useSseForDebugBackend: true, useSseForDebugBackend: true,
useSseForInjectedClient: true,
nullAssertions: true, nullAssertions: true,
nativeNullAssertions: true, nativeNullAssertions: true,
buildInfo: const BuildInfo( buildInfo: const BuildInfo(
...@@ -979,6 +984,7 @@ void main() { ...@@ -979,6 +984,7 @@ void main() {
null, null,
true, true,
true, true,
true,
const BuildInfo( const BuildInfo(
BuildMode.debug, BuildMode.debug,
'', '',
...@@ -1061,6 +1067,7 @@ void main() { ...@@ -1061,6 +1067,7 @@ void main() {
urlTunneller: null, urlTunneller: null,
useSseForDebugProxy: true, useSseForDebugProxy: true,
useSseForDebugBackend: true, useSseForDebugBackend: true,
useSseForInjectedClient: true,
nullAssertions: true, nullAssertions: true,
nativeNullAssertions: true, nativeNullAssertions: true,
buildInfo: BuildInfo.debug, buildInfo: BuildInfo.debug,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment