Javascript 在Android中从signer调用服务器端函数
SignalR在Android中连接,但我想调用服务器上可用的函数 我尝试了以下代码Javascript 在Android中从signer调用服务器端函数,javascript,android,signalr,Javascript,Android,Signalr,SignalR在Android中连接,但我想调用服务器上可用的函数 我尝试了以下代码 String host = "Host URL"; HubConnection hubConnection = new HubConnection(host, "", false, new Logger() { @Override public void log(String message, LogLevel level) { System.ou
String host = "Host URL";
HubConnection hubConnection = new HubConnection(host, "", false, new Logger() {
@Override
public void log(String message, LogLevel level) {
System.out.println("message - " + message);
}
});
hubProxy = hubConnection.createHubProxy("Task");
SignalRFuture<Void> signalRFuture = hubConnection.start().done(addSession("Session ID"));
在javascript中,这非常有效,但在android中:(
更新
通过像AnikIslamAbhi的回答一样尝试
signalRFuture = hubConnection.start().done(addSession("sessionID"));
private Action<Void> addSession(String sessionID) {
System.out.println("addSession : " + sessionID);
hubProxy.invoke("addSession", sessionID);
return null;
}
在javascript中,您使用的是自动代理 但在android中,您使用的是手动代理
proxy.invoke("addSession", sessionId)
两者在行为上都有差异
像
使用自动代理调用服务器端方法
proxy.server.addSession(sessionId)
使用手动代理调用服务器端方法
proxy.invoke("addSession", sessionId)
您可以在此找到更多信息好的,我认为这会起作用,但是当我调用它时,我收到了以下错误消息。
InvalidStateException:该操作不允许处于“连接”状态
。您能猜到,这里出了什么问题吗?hubProxy.invoke(“addSession”,sessionID)。done(新操作(){@Override public void run(void obj)抛出异常{System.out.println(“SENT!”);}})添加这个,然后告诉我发生了什么//订阅连接的事件hubConnection.connected(new Runnable(){@Override public void run(){System.out.println(“CONNECTED”);}});检查连接是否成功完整此未连接bro也未发送。我已在那里添加了logcat消息。
proxy.server.addSession(sessionId)
proxy.invoke("addSession", sessionId)