2016-12-22 6 views
0

どのような魂は、リアルタイムでデータをポーリングするために既存のmvcプロジェクトで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

まず、クライアント側のJSでのごsignalr接続を作成します。以下のようなもの:あなたのような内部のハブとメソッドのクラスを持っている必要があり、あなたのコントローラで

$(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) {} 
} 

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; 
} 

その後、あなたのjsのあなたの$(document).ready(function())にのようなものをsignalr呼び出しを追加

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

もう一度、Clients.Caller.addMessageを更新してください。<div id="divChat"></div>

+0

はチャームとして機能します。 –

関連する問題