使用FluorineFx作为客户端连接NetConnection时处理服务器端RtmpConnection.Invoke()

时间:2011-06-10 09:11:58

标签: c# .net rtmp fluorinefx

我正在尝试创建一个基本的控制台应用程序,以便对基于FluorineFx的闪存远程处理服务器进行压力测试。

我可以正常连接但我正在调用的服务器方法调用此客户端函数:

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

我正在努力找出如何将此方法公开给连接。 NetConnection.Call()方法允许您传入回调,但结果始终为null,并且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 个答案:

答案 0 :(得分:1)

通过RtmpClient第308行进行调试最终让我解决了这个问题。

您必须将NetConnection.Client属性设置为包含与服务器调用的签名具有相同签名的方法的类(在我的情况下为this,因为该方法位于Program类中)

    public void onServerDataPush(string type, string json)
    {

    }

然后FluorineFx使用反射调用该方法。