信号调用问题



i使用signalr android实现:https://github.com/erizet/signala,我有一些问题可以使用。

我这样初始化了我的哈伯连接:

String url = "http://www.myurl.com";
con = new HubConnection(url, getActivity(), new LongPollingTransport())
{
    @Override
    public void OnStateChanged(StateBase oldState, StateBase newState) {
        switch(newState.getState())
        {
        case Connected:
            ArrayList<String> test = new ArrayList<String>();
            test.add("header");
            test.add("0");
            test.add("data");
            test.add("pleyh");
            hub.Invoke("SendConnection", test, new HubInvokeCallback() {
                @Override
                public void OnResult(boolean arg0, String arg1) {
                    Log.i("HubConnection", "On result: arg0 = " + arg0 + " arg1 = " + arg1);
                }
                @Override
                public void OnError(Exception arg0) {
                    Log.i("HubConnection", "On error: arg0 = " + arg0.getMessage());
                }
            });
            break;
        case Disconnected:
            Log.i("HubConnection", "Disconnected");
            stopSignalA();
            break;
        default:
            break;
        }
    }

之后,我初始化了我的Hubproxy并开始连接:

try {
    hub = con.CreateHubProxy("GameManager");
} catch (OperationApplicationException e) {
    e.printStackTrace();
}
hub.On("addNewMessageToPage", new HubOnDataCallback() 
{
    @Override
    public void OnReceived(JSONArray args) {
        Log.i("HubConnection", "OnReceived " + args.toString());
        for(int i=0; i<args.length(); i++)
        {
            Log.i("HubConnection", "OnReceived -> addNewMessageToPage = " + args.opt(i).toString());
        }
    }
});
con.Start();

似乎一切正常,因为谈判成功了,我收到了一个带有连接的JSON。问题是当我收到Onstatechanged时进行调用时,当我知道自己已连接时,

我收到此错误:

{"I":"0","E":"'SendConnection' method could not be resolved.","T":"   at

microsoft.aspnet.signalr.hubs.nullmethoddescriptor.b_ 0(ihub) emptyHub,object [] emptyparameters) r n at microsoft.aspnet.signalr.hubs.hubdispatcher.incoming(ihubincominginvokercontext 上下文) r n ---堆栈跟踪的结束来自上一个位置 抛出了例外--- r n system.runtime.compilerservices.taskawaiter.throwfornonsuccess(任务 任务) r n at system.runtime.compilerservices.taskawaiter.handlenonsuccessanddebuggernotification(任务 任务) r n at microsoft.aspnet.signalr.hubs.hubpipipelinemodule。

这是我发送到服务器的内容:

{"H":"gamemanager","A":["header","0","data","user"],"M":"SendConnection","I":"0"}

错误表明该方法" sendConnection"不存在,但确实存在。有人已经遇到了这个问题吗?还是我的代码有问题?预先感谢!

编辑1:

有关集线器和方法定义的定义:

public class GameManager : Hub
    {
        [HubMethodName("sendConnection")]
        public void SendConnection(string Json)
        {
            Clients.Client(Context.ConnectionId).addNewMessageToPage("[SendConnection] Connection Established: " + Json);
        }
        [HubMethodName("sendToRoom")]
        public void SendToRoom(string message)
        {
            Clients.Group(FindRoomFromConnectionId()._room).addNewMessageToPage("[sendToRoom]: " + message);
        }
    }

您可以粘贴要调用的代码吗?似乎您正在调用的方法名称有问题。还提供集线器方法定义。

我认为您在调用sendConnection时使用的参数太多。尝试将代码更改为这样的东西:

        ArrayList<String> test = new ArrayList<String>(1);
        test.add("only one argument");

最新更新