public WebSocket(StreamSocket socket, HttpServerRequest httpServerRequest, Camera camera) { _inputStream = socket.InputStream; _outputStream = socket.OutputStream; _httpServerRequest = httpServerRequest; _camera = camera; }
private async Task WriteResponse(HttpServerRequest request, StreamSocket socket) { var relativeUrlLower = request.Url.ToLowerInvariant(); var outputStream = socket.OutputStream; //Get javascript files if (relativeUrlLower.StartsWith("/javascript")) { await HttpServerResponse.WriteResponseFile(this.ToFolderPath(request.Url), HttpContentType.JavaScript, outputStream); } //Get css style files else if (relativeUrlLower.StartsWith("/styles")) { await HttpServerResponse.WriteResponseFile(this.ToFolderPath(request.Url), HttpContentType.Css, outputStream); } //Get video setting else if (relativeUrlLower.StartsWith("/videosetting")) { HttpServerResponse.WriteResponseJson(ConfigurationFile.VideoSetting.Stringify(), outputStream); } //Get supported video settings else if (relativeUrlLower.StartsWith("/supportedvideosettings")) { HttpServerResponse.WriteResponseJson(ConfigurationFile.VideoSettingsSupported.Stringify(), outputStream); } //Set video settings else if (relativeUrlLower.StartsWith("/savevideosetting")) { await this._camera.Stop(); var videoSetting = new VideoSetting { VideoSubtype = VideoSubtypeHelper.Get(request.Body["VideoSubtype"].GetString()), VideoResolution = (VideoResolution)request.Body["VideoResolution"].GetNumber(), VideoQuality = request.Body["VideoQuality"].GetNumber(), UsedThreads = (int)request.Body["UsedThreads"].GetNumber() }; await ConfigurationFile.Write(videoSetting); await this._camera.Initialize(videoSetting); this._camera.Start(); HttpServerResponse.WriteResponseOk(outputStream); } //Get current camera frame else if (relativeUrlLower.StartsWith("/videoframe")) { if (this._camera.Frame != null) { var webSocket = new WebSocket(socket, request, this._camera); await webSocket.Start(); } else { HttpServerResponse.WriteResponseError("Not camera fram available. Maybe there is an error or camera is not started.", outputStream); } } //Get index.html page else { await HttpServerResponse.WriteResponseFile(@"\Html\Index.html", HttpContentType.Html, outputStream); } }