private async Task OnCommandConnect(CommandMessage msg, CancellationToken cancel_token)
{
objectEncoding = ((int)msg.CommandObject["objectEncoding"])==3 ? 3 : 0;
clientName = (string)msg.CommandObject["flashVer"];
Logger.Debug("connect: objectEncoding {0}, flashVer: {1}", objectEncoding, clientName);
await SendMessage(2, new SetWindowSizeMessage(this.Now, 0, recvWindowSize), cancel_token);
await SendMessage(2, new SetPeerBandwidthMessage(this.Now, 0, sendWindowSize, PeerBandwidthLimitType.Hard), cancel_token);
await SendMessage(2, new UserControlMessage.StreamBeginMessage(this.Now, 0, 0), cancel_token);
var response = CommandMessage.Create(
objectEncoding,
this.Now,
msg.StreamId,
"_result",
msg.TransactionId,
new AMF.AMFValue(new AMF.AMFObject {
{ "fmsVer", "FMS/3,5,5,2004" },
{ "capabilities", 31 },
{ "mode", 1 },
}),
new AMF.AMFValue(new AMF.AMFObject {
{ "level", "status" },
{ "code", "NetConnection.Connect.Success" },
{ "description", "Connection succeeded" },
{ "data", new AMF.AMFObject { { "version", "3,5,5,2004" } } },
{ "clientId", nextClientId++ },
{ "objectEncoding", objectEncoding },
})
);
if (msg.TransactionId!=0) {
await SendMessage(3, response, cancel_token);
}
}