private void FinalizeHandshake(HandshakeFrame handshakeFrame) { _extensionService.ServerConfirm(handshakeFrame); _connection.SetHandshakeCompleted(); _state = ServerState.Ready; var extensionId = _extensionService.FindFirstExtensionId("batch-ack", "ack"); if (extensionId != 0) { var name = _extensionService.FindFirstExtensionNamed("batch-ack", "ack"); var extProperties = handshakeFrame.GetExtension(name); var ackExtension = (IAckExtension)_extensionService.Get(extensionId); _ackReceiver = ackExtension.CreateAckReceiver(_connection, extensionId, DeliverMessage, extProperties); _ackSender = ackExtension.CreateAckSender(_connection, extensionId, extProperties); } extensionId = _extensionService.FindFirstExtensionId("json", "protobuf", "xml"); if (extensionId != 0) { var payloadExtension = (IPayloadExtension)_extensionService.Get(extensionId); _payloadSerializer = payloadExtension.CreatePayloadSerializer(); } if (HandshakeCompleted != null) { HandshakeCompleted(); } }