2016-12-22 8 views
0

Любая душа может посоветовать мне, как использовать signalR в существующем проекте mvc для опроса данных в реальном времени, я был бы очень признателен. пример кода:need signalR опрос для asp.net mvc

[контроллер]

private ApplicationDbContext db = new ApplicationDbContext(); 
public PartialViewResult Chat(string people) // <---need to send real time data to partial 
    { 
      var model = new MessageVM() 
      {  
       sender = User.Identity.Name;,    
       messageList = db.messages.Where(x => x.receiver == people).ToList().Take(30) 
      }; 
      return PartialView("_chat", model); 
    } 

[вид]

@Ajax.ActionLink(item.name, "Chat", new { people = item.name }, new AjaxOptions() 
{ HttpMethod = "GET", UpdateTargetId = "divChat", InsertionMode = InsertionMode.Replace }) 

<div id="divChat"></div> // <---this area need real-time messages data from controller. 

ответ

0

Сначала создайте подключение signalr в JS в стороне клиента. что-то вроде:

function signalrconnection() { 

    $.connection.hub.url = "http://localhost:54321/signalr"; 
    chat = $.connection.myHub; 


    if (chat != undefined) { 
     $.connection.hub.start() 
     .done(function() { 
      chat.server.send("client", "Status\tasking for status"); 
      chat = $.connection.myHub; 
     }) 
     .fail(function() { NoLTConnectionAlert(); }); 
    } 
    else { 
      ///do something. 
     } 
    } 

    return chat; 
} 

Затем добавить signalr вызова к вашим $(document).ready(function()) в ваших JS-то вроде:

$(document).ready(function() { 

    chat = signalrconnection(); 
    intervalstatus = setInterval(checkstatus, 1000); 

    // Create a function that the hub can call to broadcast messages. 
    chat.client.addMessage = function (name, message) {} 
} 

В контроллере вы должны иметь класс для ступицы и метода внутри как:

 public class MyHub : Hub 
    { 
     public void Send(string name, string message) 
     { 
      Clients.Caller.addMessage("parameter", reply); 
     } 
    } 

Затем снова вы должны обработать Clients.Caller.addMessage в вас js для обновления <div id="divChat"></div>

+0

работает как очарование. –