Bir SignalR hub'ımız var. Aşağıdaki jQuery kodu, Cordova üzerinde SignalR istemcisi "çağrısı" olaylarını başarıyla bağlayıp doğru şekilde işler. Ben SignalR Java Client kullanarak java android bu kodu taklit çalıştığınızdajquery signalr istemcisi çalışır ancak java'da çalışmak için kullanılamaz
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);
}
});
Ancak, günlük çıkış (ton) bir sürü almak ve hiçbir bağlantı hiç bitirir. awaitConnection.get();
numaralı satırdaki hata ayıklama kadar uzağa gider ve ikinci satır hata satırını yazdırmaz, bunun yerine sonsuz (binlerce) yarı anlamsız satırlar yazdırır (bu, borulama değil, bir çeşit "SSL tokalaşması" gibi bir şeydir, ancak defalarca aynı şeyi günlüğü şey ama, çok garip) yine de hiçbir zaman "benim" debug 2. hattını çalıştırır
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);
}
}
kimse bana kullanışlı java istemci koduna çalışma, jQuery SignalR istemci kodu çevirmek yardımcı olabilir misiniz? Merkezde herhangi bir bilgi yok, böylece vekil veya fonksiyon isimlerini bile bilmiyorum, her şeyi görmek istiyorum (jQuery gibi).
DÜZENLEME
şeyleri test etmek için, ben bu bu ne olduğunu ne zaman şimdi
console.log("SignalR Raw Data:" + JSON.stringify(data));
diyor
console.log("onDeviceReady run");
söylemek kullanmak benim orijinal jquery kodu değiştirmiş jquery,
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}
'i döndürür
ancak bunların hiçbiri "RAW mesaj aldım:" metin yani
connection.received(new MessageReceivedHandler() {
@Override
public void onMessageReceived(JsonElement json) {
System.out.println("RAW received message: " + json.toString());
// ADD HANDLING OF RECEIVED IN HERE
}
});
eşdeğer java içinde görünen Eğer göbek adını bilmiyorum beri tüm
Biliyorum ki, @drax'ın yanıtı çok yardımcı oldu, ancak soruya cevap veremedi ve kabul edildi, ve zaten eriştiğim bir bağlantıya dayanıyordu (şu anda bağlantı yok Merkez onun tavsiyesini takiben meydana geldi) ama yine de ona otomatik olarak gönderilecekmiş gibi görünüyor. – user26676