所以,我們正在使用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請求什麼所以永遠。我們做錯了什麼?
太棒了,這是signalR的問題。感謝您指出了這一點。 – 2012-04-27 06:16:11