Wir haben einen SignalR-Hub. Der folgende jQuery-Code verbindet und verarbeitet SignalClient- "Call" -Ereignisse erfolgreich auf cordova.jquery signalr Client funktioniert - aber in Java kann nicht zur Arbeit
var connectionURL = "https://SOMEURL.azurewebsites.net/message";
connection = $.connection(connectionURL);
connection.start().done(function() {
console.log("Connected to hub again");
});
connection.disconnected(function() {
setTimeout(function() {
connection.start().done(function() {
console.log("Disconnected and Connected to hub again");
});
}, 5000);
});
connection.stateChanged(function (change) {
if (change.newState == $.signalR.connectionState.reconnecting) {
}
else if (change.newState == $.signalR.connectionState.connected) {
}
else if (change.newState == $.signalR.connectionState.disconnected) {
}// else if
});
connection.received(function (data) {
connectId = connection.id + "";
console.log("onDeviceReady run");
// call the function to parse the data
if (data.PayloadType == "Dispatch") {
dataDispatch(data);
}
if (data.PayloadType == "ConnectionAcknowledge") {
sendConnectionAcknowledge(data);
}
});
aber wenn ich versuche, diesen Code in Java Android zu emulieren die SignalR Java Client verwenden, erhalte ich eine Menge Log-Ausgabe (in Tonnen), und keine Verbindung jemals beendet. es kommt so weit wie das debug in Zeile awaitConnection.get();
und druckt nie die zweite Zeile von debug, stattdessen druckt es endlose (Tausende) Zeilen von Semi Kauderwelsch (es ist nicht Rohrleitungen, es ist wie es ist eine Art von "SSL Handshake" aber es tut nicht alles andere als die gleiche Sache immer wieder, sehr seltsam Anmeldung) sowieso es läuft nie die 2. Zeile von „mein“ debug
package com.some.thing;
import android.util.Log;
import java.util.concurrent.ExecutionException;
import microsoft.aspnet.signalr.client.Platform;
import microsoft.aspnet.signalr.client.SignalRFuture;
import microsoft.aspnet.signalr.client.http.android.AndroidPlatformComponent;
import microsoft.aspnet.signalr.client.hubs.HubConnection;
import microsoft.aspnet.signalr.client.hubs.HubProxy;
import microsoft.aspnet.signalr.client.hubs.SubscriptionHandler1;
public class SignalRClient {
public static void startConnection() {
Platform.loadPlatformComponent(new AndroidPlatformComponent());
String host = "https://SOMEURL.azurewebsites.net/message";
HubConnection connection = new HubConnection(host);
HubProxy hub = connection.createHubProxy("IDoNoHaveThisNorKnowIt");
SignalRFuture<Void> awaitConnection = connection.start();
try {
Log.v("CONANSignalR :=", "CONNECTING");
awaitConnection.get();
Log.v("CONANSignalR :=", "CONNECTED");
} catch (InterruptedException e) {
// Handle ...
} catch (ExecutionException e) {
// Handle ...
}
hub.on("IDoNotKnowThisEither", new SubscriptionHandler1<String>(){
@Override
public void run(String status){
Log.v("CONANDispatch :=", status);
}
}, String.class);
}
}
Kann mir jemand helfen, die arbeiten, jQuery SignalR Client-Code in nutzbare Java-Client-Code zu übersetzen? Ich habe keine Informationen über den Hub, so dass ich den Proxy oder die Funktionsnamen nicht kennen kann, ich möchte alles sehen (wie die jQuery).
EDIT
Dinge zu testen, habe ich meinen ursprünglichen jQuery-Code es
console.log("onDeviceReady run");
jetzt sagt, es
console.log("SignalR Raw Data:" + JSON.stringify(data));
, wenn ich das dies tun, um zu sagen, verwendet verändert ist, was die jquery gibt
SignalR Raw Data:{"ConnectionId":"9c4b4ba5-cb6e-4dcb-8df9-069cbf749873","OrderId":null,"SenderId":null,"PayloadType":"ConnectionAck","Message":"Welcome, you are connected to the Hub!","Payload":null,"Initiator":"HUB","Version":null}
zurück
jedoch nichts davon innerhalb des Java dh der Text
connection.received(new MessageReceivedHandler() {
@Override
public void onMessageReceived(JsonElement json) {
System.out.println("RAW received message: " + json.toString());
// ADD HANDLING OF RECEIVED IN HERE
}
});
Äquivalent erscheint „RAW-Nachricht empfangen:“ bei allen
Ich hätte gerne gewusst, dass die Antwort von @drax sehr hilfreich war, aber er war NICHT in der Lage, die Frage zu beantworten und gab dies zu und basierte auf einem Link, auf den ich bereits Zugriff hatte der Hub ist seinem Rat folgend aufgetreten), aber es scheint, dass das Kopfgeld automatisch an ihn gesendet wird – user26676