startLiveReloadProxyServer function

void startLiveReloadProxyServer (Uri uri, String directory, Uri buildRunnerUri, Uri webSocketUri, bool spa, [ Pipeline pipeline = const Pipeline() ])

Starts a proxy server at uri proxying requests to buildRunnerUri and injects a script listening for a reloadSignal.

If spa is true, this server will utilize the rewriteAs middleware.

This needs some understanding of package: shelf.

Implementation

void startLiveReloadProxyServer(
    Uri uri, String directory, Uri buildRunnerUri, Uri webSocketUri, bool spa,
    [Pipeline pipeline = const Pipeline()]) {
  final indexHtml =
      new File.fromUri(new Uri.directory(directory).resolve('index.html'))
          .readAsStringSync();
  final listenForReload =
      "<script>new WebSocket('$webSocketUri').onmessage=function(e){if(e.data==='$reloadSignal')window.location.reload()};</script>";
  startProxyServer(
      uri,
      buildRunnerUri,
      spa
          ? pipeline
              .addMiddleware(injectJavaScript(listenForReload))
              .addMiddleware(rewriteAs(indexHtml))
          : pipeline.addMiddleware(injectJavaScript(listenForReload)));
}