[英]signalR calls a server method and that method calls a callback method ,outside the hub. How can I call client function from that method?
我想處理數據流,需要實時顯示處理過的數據。 為此,我創建了一個集線器類
public class AzureGuidanceEventHubReceiver : Hub
{
EventProcessorHost eventProcessorHost;
public async void ProcessEvents()
{
//Do some code here
eventProcessorHost.RegisterEventProcessorAsync<SimpleEventProcessor>();
}
}
處理數據的類是,
public class SimpleEventProcessor : IEventProcessor
{
public async Task ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> events)
{
foreach (EventData eventData in events)
{
int data;
var newData = this.DeserializeEventData(eventData);
//how to display newData in the browser????????????????????????????????
}
}
我的客戶端代碼是
<script type="text/javascript">
$(function () {
var receiverHub= $.connection.azureGuidanceEventHubReceiver;
receiverHub.client.displayMessage = function (data) {
var encodedData = $('<div />').text(data).html();
// Add the message to the page.
$('#discussion').append('<li><strong>' + encodedData + '</li>');
};
//// Start the connection.
$.connection.hub.start().done(function () {
$('#sendmessage').click(function () {
receiverHub.server.processEvents();
});
});
});
在這里,我調用了Hub類中的ProcessEvents方法,並注冊了SimpleEventProcessor。 因此執行進入SimpleEventProcessor中的ProcessEventsAsync。 從這個ProcessEventsAsync方法,我需要調用客戶端代碼來顯示數據。 我是否還需要將SimpleEventProcessor作為集線器類?
您可以使用以下代碼來獲取HubContext,它允許您從集線器以外的地方調用客戶端方法:
var hubContext = GlobalHost.ConnectionManager.GetHubContext<AzureGuidanceEventHubReceiver>();
hubContext.Clients.All.displayMessage(dataToDisplay);
在這里,我遇到的問題是客戶端方法DisplayMessage不是每次都執行。 我需要顯示一條消息流。 但是當我將調試器放在客戶端代碼中時,它每次都會執行。這是我的客戶端代碼。
chat.client.displayMessage = function (data) {
// Html encode display data
debugger;
var encodedData = $('<div />').text(data.GPSPosition).html();
var data = encodedData.split("\n");
var varlat = data[0].replace("Latitude:","").trim();
var varlong = data[1].replace("Longitude:", "").trim();
ShowInGoogleMap(varlat, varlong);
};
我該如何顯示消息流? 為什么它只與調試器一起使用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.