Обработка RtmpConnection.Invoke () на стороне сервера при соединении с NetConnection в качестве клиента с использованием FluorineFx - PullRequest
0 голосов
/ 10 июня 2011

Я пытаюсь создать базовое консольное приложение, чтобы провести стресс-тестирование нашего сервера флэш-удаленного взаимодействия на основе FluorineFx.

Я могу подключиться нормально, но вызываемый мной метод сервера вызывает следующую функцию на стороне клиента:

connection.Invoke("onServerDataPush", new string[] { "someParam", "anotherParam" });

Я изо всех сил пытаюсь выяснить, как я могу выставить этот метод на связь. Метод NetConnection.Call () позволяет передать обратный вызов, но результат этого всегда равен нулю, и вызов NetConnection завершается неудачно со следующей ошибкой:

Could not find a suitable method with name onServerDataPush

Вот мой код на стороне клиента:

class Program
{
    private NetConnection _netConnection;

    static void Main(string[] args)
    {
        var program = new Program();
        program.Connect();
        Console.ReadLine();
    }

    public void Connect()
    {
        _netConnection = new NetConnection();
        _netConnection.ObjectEncoding = ObjectEncoding.AMF3;
        _netConnection.OnConnect += netConnection_OnConnect;
        _netConnection.NetStatus += netConnection_NetStatus;
        _netConnection.Connect("rtmp://localhost:1935/MyApplication");
    }

    void netConnection_OnConnect(object sender, EventArgs e)
    {
        var responder = new Responder<object>(x =>
                                                  {
                                                      var test = x;
                                                  });

        //The NetConnection object is connected now
        _netConnection.Call("MyServerMethod", responder, "someParameter");
    }
    void netConnection_NetStatus(object sender, NetStatusEventArgs e)
    {
        string level = e.Info["level"] as string;
    }
}

1 Ответ

1 голос
/ 10 июня 2011

Отладка по RtmpClient строке 308. Наконец-то мне удалось решить эту проблему.

Необходимо установить свойство NetConnection.Client для класса, который содержит метод с такой же сигнатурой, что и метод, вызываемый сервером(в моем случае this, поскольку метод находится в классе Program).

    public void onServerDataPush(string type, string json)
    {

    }

Затем FluorineFx вызывает метод с использованием отражения.

...