2012-06-29 124 views
4

這是我第一次嘗試signalR,我不知道我的代碼是否正確,這段代碼只是爲了測試,signalR應該發佈到所有客戶端從控制器行動時調用: 這裏是我所做的:使用的NuGetSignalR發佈從服務器不工作

1.Installed SignalR(我曾與捆綁/縮小一個小問題),所以我進口signalR JS separatly

2.Created中心在新的文件夾SingalR:

[HubName("messageHub")] 
    public class MessagesHub : Hub 
    { 
     public void AddMessage(string htmlstring) 
     { 
      Clients.addMessage(htmlstring); 
     } 
    } 

3.創建客戶端腳本,I只需要服務器 - >客戶端,而不是兩種方式:

<script src="@Url.Content("~/SignalR/jquery.signalR-0.5.2.min.js")" type="text/javascript"></script> 
<script src="/signalr/hubs" type="text/javascript"></script> 

<div class="content-wrapper"> 
     <h1 id="lq" class="subtitle">Public Messages</h1> 
</div> 

<script type="text/javascript"> 
    $(function() 
    { 
     var message = $.connection.messageHub; 

     message.addMessage= function (htmlstring) 
     { 
      $(htmlstring).insertAfter('#lq'); 
     }; 

     $.connection.hub.start(); 
    }); 
</script> 

4.Here是當有人訪問它的行動至極應該張貼消息到所有客戶端。

public ActionResult Index(int id, string title) 
    { 
    MessagesModel model = new MessagesModel(id); 
    var hubContext = GlobalHost.ConnectionManager.GetHubContext<SignalR.MessagesHub>(); 
    hubContext.Clients.addMessage("Sample Message"); 
    return View(model); 
    } 

於是我打開Firefox,我可以看到談判sucess在Firebug中,我打開Chrome,去這個頁面索引剛看到「樣品信息」插入到網頁在Firefox,但什麼也沒有發生,我缺少什麼?

更新: 我得到「/ signalr /集線器」未發現螢火蟲

從一個頁面瀏覽時離開

回答

4

這可能聽起來很傻,但問題是在客戶端和服務器的方法,其中同名althought套管是不同的,所以我只是改變:

[HubName("messageHub")] 
    public class MessagesHub : Hub 
    { 
     public void AddMessage(string htmlstring) 
     { 
      Clients.addMessage(htmlstring); 
     } 
    } 

到:

[HubName("messageHub")] 
     public class MessagesHub : Hub 
     { 
      public void SendMessage(string htmlstring) 
      { 
       Clients.addMessage(htmlstring); 
      } 
     } 
相關問題