mtanksl.ActionMessageFormat 1.0.4

dotnet add package mtanksl.ActionMessageFormat --version 1.0.4                
NuGet\Install-Package mtanksl.ActionMessageFormat -Version 1.0.4                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="mtanksl.ActionMessageFormat" Version="1.0.4" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add mtanksl.ActionMessageFormat --version 1.0.4                
#r "nuget: mtanksl.ActionMessageFormat, 1.0.4"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install mtanksl.ActionMessageFormat as a Cake Addin
#addin nuget:?package=mtanksl.ActionMessageFormat&version=1.0.4

// Install mtanksl.ActionMessageFormat as a Cake Tool
#tool nuget:?package=mtanksl.ActionMessageFormat&version=1.0.4                

AMF.net

An implementation in C# of both AMF0 and AMF3 binary format that is used to serialize ActionScript object graphs.

Why?

So, Flash is dead and Adobe will end support of Flash Player on December 31, 2020. I actually never used Flash and had no knowledge of it's build in communication protocol. It turns out that I had to automate a creepy old software written in Flash. Since I did not find any good library, I've written my own.

Audience

Probably nobody. But hey, It is fun to learn and implement a protocol. I kind liked this one (but no, I will never use it again).

How to serialize an object

var writer = new AmfWriter();

writer.WriteAmfPacket(new AmfPacket()
{
    Version = AmfVersion.Amf3,
    Headers = new List<AmfHeader>(),
    Messages = new List<AmfMessage>()
    {
        new AmfMessage()
        {
            TargetUri = "null",
            ResponseUri = "/1",
            Data = new CommandMessageExt()
            {
                Operation = 5,
                CorrelationId = "",
                TimeToLive = 0,
                Timestamp = 0,
                Headers = new { DSMessagingVersion = 1, DSId = "nil" },
                Body = new { },
                ClientId = null,
                Destination = "",
                MessageId = Guid.NewGuid().ToString()
            }
        }
    }
} );

How to deserialize an object

var reader = new AmfReader(writer.Data);

var packet = reader.ReadAmfPacket();

Object Viewer

I've also implemented a custom object viewer. Please note that IExternalizable classes need the definition models within the project. Use [TraitClass] and [TraitMember] attributes to map custom classes and properties.

Object Viewer

Fiddler Inspector

I've also implemented a custom Fiddler Inspector. Please note that IExternalizable classes need the definition models within the project. Use [TraitClass] and [TraitMember] attributes to map custom classes and properties. To build, add a reference to C:\Users<USER>\AppData\Local\Programs\Fiddler\Fiddler.exe After build, copy all dlls to C:\Users<USER>\Documents\Fiddler2\Inspectors\

Fiddler Inspector

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on mtanksl.ActionMessageFormat:

Package Downloads
LiveStreamingServerNet.Rtmp

This package provides shared components and utilities for RTMP server and client implementations.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on mtanksl.ActionMessageFormat:

Repository Stars
josephnhtam/live-streaming-server-net
A .NET implementation of RTMP live streaming server, supporting HTTP-FLV, WebSocket-FLV, HLS, Kubernetes, cloud storage services integration and more.
Version Downloads Last updated
1.0.4 9,051 3/9/2020