After trying several options, I'm not able to receive all the SignalR messages on my Android application. In my opinion it seems to be something related with the LongPollingTransport, but I can't find the solution... I receive all the longPolling messages, but sometimes it enters the handler and other times it tries to connect again to the server without entering the handler method.
I've tried to follow the examples on here.
The code is very simple:
public void startNewSignalR(){
Platform.loadPlatformComponent(new AndroidPlatformComponent());
// Create a new console logger
Logger logger = new Logger() {
@Override
public void log(String message, LogLevel level) {
System.out.println(message);
}
};
Uri signalRSource = Uri.parse(serverUrl);
HubConnection connection = new HubConnection(signalRSource.toString(), "", true, logger);
eventHub = connection.createHubProxy("eventHub");
connection.error(new ErrorCallback() {
@Override
public void onError(Throwable error) {
System.err.println("There was an error communicating with the server.");
System.err.println("Error detail: " + error.toString());
error.printStackTrace(System.err);
}
});
// Subscribe to the connected event
connection.connected(new Runnable() {
@Override
public void run() {
System.out.println("CONNECTED");
}
});
// Subscribe to the closed event
connection.closed(new Runnable() {
@Override
public void run() {
System.out.println("DISCONNECTED");
}
});
eventHub.subscribe(new Object() {
@SuppressWarnings("unused")
public void receivePendingCountUpdate(String A) {
System.out.println("------------------------>>>>> Count: " + A);
}
});
// Start the connection
connection.start(new LongPollingTransport(logger))
.done(new Action<Void>() {
@Override
public void run(Void obj) throws Exception {
System.out.println("Done Connecting!");
eventHub.invoke("JoinGroup", "signalevents-" + userId + "-pendingcount");
}
});
}
And here you can also see the console output that I receive, where the first message doesn't enter the method and the second one that enters:
02-18 16:23:08.954 6877-9048/com.sensingcontrol.android I/System.out﹕ HubConnection - Starting transport for Reconnection
02-18 16:23:10.307 6877-9031/com.sensingcontrol.android I/System.out﹕ longPolling - Trigger onData with data: {"C":"s-0,10BC5E0|1,264DB67|2,445369|3,106F98E|4,1EAF347","M":[{"H":"EventHub","M":"receivePendingCountUpdate","A":[208]}]}
02-18 16:23:10.307 6877-9031/com.sensingcontrol.android I/System.out﹕ HubConnection - Received data:
02-18 16:23:10.307 6877-9031/com.sensingcontrol.android I/System.out﹕ MessageId received: s-0,10BC5E0|1,264DB67|2,445369|3,106F98E|4,1EAF347
02-18 16:23:10.307 6877-9031/com.sensingcontrol.android I/System.out﹕ Invoking OnReceived with: null
02-18 16:23:10.307 6877-9031/com.sensingcontrol.android I/System.out﹕ HubConnection - Processing message
02-18 16:23:10.313 6877-9048/com.sensingcontrol.android I/System.out﹕ longPolling - Start the communication with the server
02-18 16:23:10.317 6877-9048/com.sensingcontrol.android I/System.out﹕ HubConnection - Getting connection data: [{"name":"eventhub"}]
02-18 16:23:10.317 6877-9048/com.sensingcontrol.android I/System.out﹕ longPolling - Execute the request
02-18 16:23:10.318 6877-9048/com.sensingcontrol.android I/System.out﹕ Create new thread for HTTP Connection
02-18 16:23:10.337 6877-9061/com.sensingcontrol.android I/System.out﹕ Execute the HTTP Request
02-18 16:23:10.337 6877-9061/com.sensingcontrol.android I/System.out﹕ URL: http://url/signalr/reconnect
02-18 16:23:10.342 6877-9061/com.sensingcontrol.android I/System.out﹕ VERB: GET
02-18 16:23:10.342 6877-9061/com.sensingcontrol.android I/System.out﹕ Header User-Agent: SignalR (lang=Java; os=android; version=2.0)
02-18 16:23:10.342 6877-9061/com.sensingcontrol.android I/System.out﹕ CONTENT: null
02-18 16:23:10.343 6877-9061/com.sensingcontrol.android I/System.out﹕ Request executed
02-18 16:23:10.498 6877-9061/com.sensingcontrol.android I/System.out﹕ HubConnection - Entered startLock after transport was started
02-18 16:23:10.498 6877-9061/com.sensingcontrol.android I/System.out﹕ HubConnection - Current state: Reconnecting
02-18 16:23:10.498 6877-9061/com.sensingcontrol.android I/System.out﹕ HubConnection - Starting Heartbeat monitor
02-18 16:23:10.498 6877-9061/com.sensingcontrol.android I/System.out﹕ HubConnection - Reconnected
02-18 16:23:10.498 6877-9061/com.sensingcontrol.android I/System.out﹕ longPolling - Response received
02-18 16:23:10.498 6877-9061/com.sensingcontrol.android I/System.out﹕ longPolling - Read response to the end
02-18 16:23:10.918 6877-9032/com.sensingcontrol.android I/System.out﹕ longPolling - Trigger onData with data: {"C":"s-0,10BC5E1|1,264DB67|2,44536B|3,106F98F|4,1EAF347","M":[{"H":"EventHub","M":"receivePendingCountUpdate","A":[208]}]}
02-18 16:23:10.918 6877-9032/com.sensingcontrol.android I/System.out﹕ HubConnection - Received data:
02-18 16:23:10.938 6877-9030/com.sensingcontrol.android I/System.out﹕ MessageId received: s-0,10BC5E1|1,264DB67|2,44536B|3,106F98F|4,1EAF347
02-18 16:23:10.938 6877-9030/com.sensingcontrol.android I/System.out﹕ Invoking OnReceived with: null
02-18 16:23:10.938 6877-9030/com.sensingcontrol.android I/System.out﹕ HubConnection - Processing message
02-18 16:23:10.940 6877-9047/com.sensingcontrol.android I/System.out﹕ longPolling - Start the communication with the server
02-18 16:23:10.955 6877-9047/com.sensingcontrol.android I/System.out﹕ HubConnection - Getting connection data: [{"name":"eventhub"}]
02-18 16:23:10.955 6877-9047/com.sensingcontrol.android I/System.out﹕ longPolling - Execute the request
02-18 16:23:10.979 6877-9046/com.sensingcontrol.android I/System.out﹕ Create new thread for HTTP Connection
02-18 16:23:10.989 6877-9074/com.sensingcontrol.android I/System.out﹕ Execute the HTTP Request
02-18 16:23:10.989 6877-9074/com.sensingcontrol.android I/System.out﹕ URL: http://url/signalr/reconnect
02-18 16:23:10.989 6877-9074/com.sensingcontrol.android I/System.out﹕ VERB: GET
02-18 16:23:10.997 6877-9073/com.sensingcontrol.android I/System.out﹕ Header User-Agent: SignalR (lang=Java; os=android; version=2.0)
02-18 16:23:10.997 6877-9073/com.sensingcontrol.android I/System.out﹕ CONTENT: null
02-18 16:23:10.998 6877-9073/com.sensingcontrol.android I/System.out﹕ Request executed
02-18 16:23:11.217 6877-9074/com.sensingcontrol.android I/System.out﹕ HubConnection - Entered startLock after transport was started
02-18 16:23:11.217 6877-9074/com.sensingcontrol.android I/System.out﹕ HubConnection - Current state: Reconnecting
02-18 16:23:11.218 6877-9074/com.sensingcontrol.android I/System.out﹕ HubConnection - Starting Heartbeat monitor
02-18 16:23:11.219 6877-9074/com.sensingcontrol.android I/System.out﹕ HubConnection - Reconnected
02-18 16:23:11.239 6877-9073/com.sensingcontrol.android I/System.out﹕ longPolling - Response received
02-18 16:23:11.239 6877-9073/com.sensingcontrol.android I/System.out﹕ longPolling - Read response to the end
02-18 16:23:12.721 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Timeout
02-18 16:23:12.721 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Stopping Heartbeat monitor
02-18 16:23:12.722 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Restarting the transport
02-18 16:23:12.722 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Entered startLock in startTransport
02-18 16:23:12.722 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Starting the transport
02-18 16:23:12.722 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Stopping heartbeat monitor
02-18 16:23:12.722 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Clearing invocation callbacks: Reconnecting
02-18 16:23:12.723 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Starting transport for Reconnection
02-18 16:23:14.073 6877-9061/com.sensingcontrol.android I/System.out﹕ longPolling - Trigger onData with data: {"C":"s-0,10BC5E7|1,264DB6C|2,445378|3,106F995|4,1EAF34C","M":[{"H":"EventHub","M":"receivePendingCountUpdate","A":[209]}]}
02-18 16:23:14.073 6877-9061/com.sensingcontrol.android I/System.out﹕ HubConnection - Received data:
02-18 16:23:14.074 6877-9061/com.sensingcontrol.android I/System.out﹕ MessageId received: s-0,10BC5E7|1,264DB6C|2,445378|3,106F995|4,1EAF34C
02-18 16:23:14.074 6877-9061/com.sensingcontrol.android I/System.out﹕ Invoking OnReceived with: null
02-18 16:23:14.123 6877-9073/com.sensingcontrol.android I/System.out﹕ HubConnection - Processing message
02-18 16:23:14.123 6877-9067/com.sensingcontrol.android I/System.out﹕ longPolling - Start the communication with the server
02-18 16:23:14.124 6877-9067/com.sensingcontrol.android I/System.out﹕ HubConnection - Getting connection data: [{"name":"eventhub"}]
02-18 16:23:14.124 6877-9067/com.sensingcontrol.android I/System.out﹕ longPolling - Execute the request
02-18 16:23:14.124 6877-9067/com.sensingcontrol.android I/System.out﹕ Create new thread for HTTP Connection
02-18 16:23:14.141 6877-9078/com.sensingcontrol.android I/System.out﹕ Execute the HTTP Request
02-18 16:23:14.141 6877-9078/com.sensingcontrol.android I/System.out﹕ URL: http://url/signalr/reconnect
02-18 16:23:14.141 6877-9078/com.sensingcontrol.android I/System.out﹕ VERB: GET
02-18 16:23:14.149 6877-9077/com.sensingcontrol.android I/System.out﹕ Header User-Agent: SignalR (lang=Java; os=android; version=2.0)
02-18 16:23:14.149 6877-9077/com.sensingcontrol.android I/System.out﹕ CONTENT: null
02-18 16:23:14.149 6877-9077/com.sensingcontrol.android I/System.out﹕ Request executed
02-18 16:23:14.267 6877-9079/com.sensingcontrol.android I/System.out﹕ HubConnection - Entered startLock after transport was started
02-18 16:23:14.267 6877-9079/com.sensingcontrol.android I/System.out﹕ HubConnection - Current state: Reconnecting
02-18 16:23:14.267 6877-9079/com.sensingcontrol.android I/System.out﹕ HubConnection - Starting Heartbeat monitor
02-18 16:23:14.268 6877-9079/com.sensingcontrol.android I/System.out﹕ HubConnection - Reconnected
02-18 16:23:14.271 6877-9077/com.sensingcontrol.android I/System.out﹕ longPolling - Response received
02-18 16:23:14.271 6877-9077/com.sensingcontrol.android I/System.out﹕ longPolling - Read response to the end
02-18 16:23:16.117 6877-9077/com.sensingcontrol.android I/System.out﹕ longPolling - Trigger onData with data: {"C":"s-0,10BC5F2|1,264DB6E|2,44537C|3,106F997|4,1EAF34E","M":[{"H":"EventHub","M":"receivePendingCountUpdate","A":[209]}]}
02-18 16:23:16.117 6877-9077/com.sensingcontrol.android I/System.out﹕ HubConnection - Received data:
02-18 16:23:16.118 6877-9077/com.sensingcontrol.android I/System.out﹕ MessageId received: s-0,10BC5F2|1,264DB6E|2,44537C|3,106F997|4,1EAF34E
02-18 16:23:16.136 6877-9077/com.sensingcontrol.android I/System.out﹕ Invoking OnReceived with: null
02-18 16:23:16.137 6877-9077/com.sensingcontrol.android I/System.out﹕ HubConnection - Processing message
02-18 16:23:16.137 6877-9077/com.sensingcontrol.android I/System.out﹕ HubConnection - Getting HubInvocation from message
02-18 16:23:16.138 6877-9077/com.sensingcontrol.android I/System.out﹕ HubConnection - Message for: eventhub
02-18 16:23:16.138 6877-9077/com.sensingcontrol.android I/System.out﹕ HubConnection - Invoking event: receivependingcountupdate with arguments [209]
02-18 16:23:16.138 6877-9077/com.sensingcontrol.android I/System.out﹕ HubProxy eventHub - Handling dynamic subscription: receivePendingCountUpdate
02-18 16:23:16.139 6877-9077/com.sensingcontrol.android I/System.out﹕ HubProxy eventHub - Invoking method for dynamic subscription: receivePendingCountUpdate
02-18 16:23:16.173 6877-9079/com.sensingcontrol.android I/System.out﹕ ------------------------>>>>> Count: 209
02-18 16:23:16.173 6877-9079/com.sensingcontrol.android I/System.out﹕ longPolling - Continue polling