public async Task SocketReadsData()
        {
            ValueTask HandleConnection(SocketServer <object, object> .Connection connection)
            {
                Logger.Info($"Client connected to server: {connection.Id}");
                return(new ValueTask());
            }

            ValueTask <bool> HandleServerMessage(SocketServer <object, object> .Connection connection, object message)
            {
                Logger.Info($"Server message received: {connection.Id}:{message}");
                return(new ValueTask <bool>());
            }

            ValueTask HandleServerDisconnection(SocketServer <object, object> .Connection connection, Exception ex, bool expected)
            {
                Logger.Info($"Client disconnected from server: {connection.Id}:{expected}. {ex}");
                return(new ValueTask());
            }

            ValueTask HandleServerKeepAlive(SocketServer <object, object> .Connection connection)
            {
                Logger.Info($"Server keep handled alive for: {connection.Id}");
                return(new ValueTask());
            }

            var server = new SocketServer <object, object>(
                Deserializer,
                Serializer,
                null,
                HandleConnection,
                HandleServerMessage,
                HandleServerDisconnection,
                HandleServerKeepAlive);

            await server.ListenAsync(5463).ConfigureAwait(false);

            await Task.Delay(1000).ConfigureAwait(false);

            ValueTask <bool> HandleClientMessage(object message)
            {
                Logger.Info($"Client message received: {message}");
                return(new ValueTask <bool>());
            }

            ValueTask HandleClientDisconnection(Exception ex)
            {
                Logger.Info($"Client disconnected");
                return(new ValueTask());
            }

            ValueTask HandleClientKeepAlive()
            {
                Logger.Info($"Handling client keep alive.");
                return(new ValueTask());
            }

            var config = new SocketConfiguration
            {
                Ip   = "127.0.0.1",
                Port = 5463
            };

            var clientStream = new EventMessageStream <object>(
                Deserializer,
                Serializer,
                new SocketDuplexMessageStreamWrapper(config),
                HandleClientMessage,
                HandleClientKeepAlive,
                HandleClientDisconnection);

            await clientStream.OpenAsync().ConfigureAwait(false);

            await clientStream.WriteAsync(new PingMessage
            {
                Id = 1
            }).ConfigureAwait(false);
        }