Tôi cần phải đẩy tin nhắn từ máy chủ ASP.NET tới thiết bị Android để nhận thông báo bất cứ khi nào trạng thái của bản ghi được thay đổi. Vì vậy, tôi muốn sử dụng Trình khách Java SignalR mới của Microsoft từ GitHub sử dụng Eclipse với Gói ADT của Android và Java.Làm cách nào để nhận tin nhắn phát sóng SignalR bằng Microsoft Java-Client?
- https://github.com/SignalR/java-client
- http://whathecode.wordpress.com/2014/03/20/getting-started-with-the-java-signalr-sdk/
Tôi mới vào Java và SignalR. Tôi có SignalR Hub và JavaScript client làm việc trong HTML và nó có thể gửi và nhận tin nhắn. Nhưng tôi không thể chuyển sang bước tiếp theo và làm cho Java-Client hoạt động trong Eclipse/Java/Android. Tôi không chắc cách đăng ký để nhận tin nhắn quảng bá. Khi tôi gửi thư bằng trang HTML/JavaScript, tôi không nhận được thông báo trong ứng dụng Android, trong trình mô phỏng, trong Eclipse. Tôi có thể
Tôi đã sau tập ASP.NET SignalR Hub.cs thiết lập:
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);
}
}
Trong JavaScript, tôi cũng có thể sử dụng các tập tin Hubs.js đó là tính năng tự động tạo ra từ ASP.NET Hub.cs để gửi và nhận tin nhắn thông qua Hub.
<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!'); });
});
Tuy nhiên, trong Eclipse/Java/Android Tôi không chắc chắn những gì mã tôi cần phải sử dụng để nhận được một thông điệp quảng bá. Tôi có thể bắt đầu kết nối và nhận được một connectionID ở phần cuối của ví dụ mã sau đây nhưng tôi bị mắc kẹt ở đó. Tôi có cần sử dụng .on() hoặc .subscribe() bằng cách nào đó không? Khi tôi chạy mã này, tôi thấy một ID kết nối được ghi lại nhưng tôi không thể kích hoạt thông báo phát sóng từ trang html/JavaScript. Không có gì được nhận và tôi không nhận được lỗi ở bất cứ đâu. Có ai biết những gì tôi có thể bị thiếu ở đây không?
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());
Vì vậy, một lần nữa, tôi có sử dụng proxy.on() để thiết lập để nhận thông báo phát sóng hoặc nội dung khác không? Và những gì chuỗi để tôi vượt qua phương pháp? "broadcastMessage" hoặc có thể "sendAll" trong trường hợp của tôi? Mọi sự trợ giúp sẽ rất được trân trọng.
Xem này http://stackoverflow.com/ a) 42527962/1770868 –