2012-04-26 48 views
2

所以,我們正在使用signalR實現一些消息系統。 我們通過最新版本的Nuget包含了signalR。 該應用程序駐留在IIS 7上。我們禁用了所有的URL重寫規則。SignalR不會在開始時發送Web請求

我們正在使用的輪轂,請參閱下面的代碼:


    [HubName("messages")] 
    public class Messages : Hub 
    { 
     public void Send(string message) 
     { 
      Clients.showPopUp(message); 
     } 
    } 

的包括在視圖文件:Messages.js的

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

內容:

$(function() { 
    var messages = $.connection.messages; 

    messages.showPopUp = function (message) { 
     console.log("test"); 
    }; 

    $.connection.hub.start(function() { 
     console.log('connected'); 
    }); 
}); 

調用當提交信息時:

$.connection.messages.send($('#Body').val()); 

所以我們得到的結果是:Google Chrome控制檯沒有錯誤,沒有xhr請求什麼信號。

我們檢查,如果/signalr/hubs存在,它也/signalr/negotiate返回以下JSON:

{"Url":"/agenda/signalr","ConnectionId":"a4215b26-32f1-4a52-bf6d-4de096298a07","TryWebSockets":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.0"} 

當我們調用發送我們在控制檯中執行以下操作:

未捕獲SignalR:必須在數據可以發送之前開始連接。 。發送()之前調用。開始()

如果我們調試signalR,我們看到開始叫,但我們不打了jQuery Ajax調用的錯誤或成功,並且沒有XHTML請求什麼所以永遠。我們做錯了什麼?

No Web requests

回答

1

解決方案

在jquery.signalR.js改變所有的

$.ajax(url, {options}); 

$.ajax({ url: url, other options...});