示例#1
0
        public async Task <IActionResult> ServiceWorkerAsync()
        {
            Response.ContentType = "application/javascript; charset=utf-8";
            Response.Headers[HeaderNames.CacheControl] = $"max-age={_options.ServiceWorkerCacheControlMaxAge}";

            string   fileName       = _options.Strategy + ".js";
            Assembly assembly       = typeof(PwaController).Assembly;
            Stream   resourceStream = assembly.GetManifestResourceStream($"WebEssentials.AspNetCore.Pwa.ServiceWorker.Files.{fileName}");

            Func <string, string> Rejoin(string splitter, Func <string, string> iterate)
            => (string text)
            => string.Join(splitter, text.Split(new[] { splitter }, StringSplitOptions.RemoveEmptyEntries).Select(iterate));

            using (var reader = new StreamReader(resourceStream))
            {
                string js = await reader.ReadToEndAsync();

                string modified = js
                                  .Replace("{version}", _options.CacheId + "::" + _options.Strategy)
                                  .Replace("{routes}", Rejoin(",", r => "'" + r.Trim() + "'")(_options.RoutesToPreCache))
                                  .Replace("{patternToIgnore}", Rejoin(_options.PatternToIgnoreDelimiter, r => r.Trim())(_options.PatternToIgnore))
                                  .Replace("{offlineRoute}", _options.BaseRoute + _options.OfflineRoute)
                                  .Replace("{installImmediately}", _options.InstallImmediately.ToString().ToLower());

                return(Content(modified));
            }
        }
示例#2
0
 static async void HandleClientInput(ClientWebSocket clientWebSocket, Queue <byte[]> bufferQueue)
 {
     await Task.Factory.StartNew(() =>
     {
         Random random             = new Random();
         Registration registration = new Registration(clientWebSocket);
         registration.Invoke();
         Movement movement = new Movement(clientWebSocket);
         Rejoin rejoin     = new Rejoin(clientWebSocket);
         while (true)
         {
             Console.ReadLine();
             float angle = (float)random.NextDouble() * (3f + 3f) - 3f;
             movement.Invoke(angle);
         }
     });
 }