Мне нужно отправить сообщение с сервера ASP.NET на устройства Android для уведомления при изменении состояния записи. Поэтому я хотел бы использовать новый Java-клиент SignalR от GitHub, используя Eclipse с Android ADT Bundle и Java.Как получать широковещательное сообщение SignalR с помощью Microsoft Java-Client?
- https://github.com/SignalR/java-client
- http://whathecode.wordpress.com/2014/03/20/getting-started-with-the-java-signalr-sdk/
Я новичок в Java и SignalR. У меня есть клиент SignalR Hub и JavaScript, работающий в HTML, и он может отправлять и получать сообщения. Но я не могу перейти к следующему шагу и заставить Java-Client работать в Eclipse/Java/Android. Я не уверен, как зарегистрироваться для получения широковещательного сообщения. Когда я отправляю сообщение с помощью страницы HTML/JavaScript, я не получаю сообщение в приложении Android в эмуляторе в Eclipse. Я могу
У меня есть следующий ASP.NET SignalR Hub.cs файл настройка:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System.Threading.Tasks;
public class PtThroughputHub : Hub
{
public void SendAll(string message)
{
Clients.All.broadcastMessage(message);
}
public void SendGroup(string groupName, string message)
{
Clients.Group(groupName).broadcastMessage(message);
}
public Task JoinGroup(string groupName)
{
return Groups.Add(Context.ConnectionId, groupName);
}
public Task LeaveGroup(string groupName)
{
return Groups.Remove(Context.ConnectionId, groupName);
}
}
В JavaScript, я могу также использовать файл Hubs.js, который автоматически генерируется из ASP.NET Hub.cs для отправки и получения сообщений через концентратор.
<script src="Scripts/jquery-2.1.0.min.js"></script>
<!--Reference the SignalR library. -->
<script src="Scripts/jquery.signalR-2.0.3.min.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="signalr/hubs"></script>
$(function() {
$.connection.hub.logging = true;
// Declare a proxy to reference the hub.
var ptThroughput = $.connection.ptThroughputHub;
// Create a function that the hub can call to broadcast messages.
ptThroughput.client.broadcastMessage = function (message) {
alert(message);
};
// Start the connection.
$.connection.hub.start()
.done(function() {
alert('Successfully connected as ' + $.connection.hub.id);
ptThroughput.server.joinGroup("Group1");
$('#btnSend').click(function() {
// Call the Send method on the hub.
ptThroughput.server.sendGroup('Group1', 'My Message Test Here!');
})
})
.fail(function() { $("#connection").text('Can not connect to SignalR hub!'); });
});
Однако в Затмении/Java/Android Я не уверен, какой код нужно использовать для получения широковещательного сообщения. Я могу запустить соединение и получить идентификатор соединения в конце следующего примера кода, но я застрял там. Нужно ли мне как-то использовать .on() или .subscribe()? Когда я запускаю этот код, я вижу идентификатор соединения, но я не могу вызвать широковещательное сообщение со страницы html/JavaScript. Ничего не получено, и я ничего не получаю. Кто-нибудь знает, что мне здесь не хватает?
import microsoft.aspnet.signalr.client.SignalRFuture;
import microsoft.aspnet.signalr.client.hubs.HubConnection;
import microsoft.aspnet.signalr.client.hubs.HubProxy;
import microsoft.aspnet.signalr.client.hubs.SubscriptionHandler;
//Setup connection
String server = "http://Servername/Applications/ThroughputMobile/";
HubConnection connection = new HubConnection(server);
HubProxy proxy = connection.createHubProxy("ptThroughputHub");
//--HERE IS WHERE I AM NOT SURE HOW TO SET IT UP TO RECEIVE A NOTIFICATION---
//Setup to receive broadcast message
proxy.on("broadcastMessage",new SubscriptionHandler() {
@Override
public void run() {
Log.i("Test Message", "broadcastMessage received...");
}
});
//---------------------------------------------------------------------------
//Start connection
SignalRFuture<Void> awaitConnection = connection.start();
try {
awaitConnection.get();
} catch (InterruptedException e) {
//Log Connection ID
Log.i("Test Message", "Connection ID = " + connection.getConnectionId());
Итак, пользуюсь proxy.on(), чтобы настроить прием уведомлений о вещах или что-то еще? И какую строку я передаю методу? «broadcastMessage» или, возможно, «sendAll» в моем случае? Любая помощь будет принята с благодарностью.
Посмотрите этот http://stackoverflow.com/ a/42527962/1770868 –