private async Task OnMessageReceive(IdentifiableWebSocket socket, WebSocketReceiveResult result, byte[] buffer, CancellationToken cancellationToken)
        {
            var message = Encoding.UTF8.GetString(buffer, 0, result.Count);
            var request = JsonSerializer.Deserialize <ClientRequest>(message);

            if (request.Action == RequestedClientActionEnum.Show)
            {
                await socket.SendMessageAsync(JsonSerializer.Serialize(_provider.GetProcesses()), cancellationToken);
            }
            else if (request.Action == RequestedClientActionEnum.Subscribe)
            {
                socket.Subscribed = true;
            }
            else if (request.Action == RequestedClientActionEnum.Unsubscribe)
            {
                socket.Subscribed = false;
            }
        }
        /// <summary>
        /// Starts broadcast
        /// </summary>
        /// <param name="webSocketHandler">websocket broadcast handler</param>
        /// <param name="cachedProcessesProvider">Container of processes infromation</param>
        public async Task InvokeAsync(IWebSocketHandler webSocketHandler, ICachedProcessesProvider cachedProcessesProvider, CancellationToken cancellationToken)
        {
            while (!cancellationToken.IsCancellationRequested)
            {
                await webSocketHandler.SendMessageToSubscribedAsync(JsonSerializer.Serialize(cachedProcessesProvider.GetProcesses()), cancellationToken);

                await Task.Delay(1000);
            }
        }