2011-11-14 133 views
4

的Global.asax:

void Application_Start(object sender, EventArgs e) 
{ 
    RouteTable.Routes.MapConnection<myconnection>("echo", "echo/{*operation}"); 
} 

myconnection.cs

public class myconnection : PersistentConnection 
    { 
     protected override Task OnReceivedAsync(string clientId, string data) 
     { 
      // Broadcast data to all clients 
      return Connection.Broadcast(data); 
     } 
    } 

〜/頁/ Messages.aspx

<script src="http://code.jquery.com/jquery-1.7.min.js" type="text/javascript"></script> 
<script src="../Scripts/jquery.signalR.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
    $(function() { 
     var connection = $.connection('echo'); 

     connection.received(function (data) { 
      $('#messages').append('<li>' + data + '</li>'); 
     }); 

     connection.start(); 

     $("#broadcast").click(function() { 
      connection.send($('#msg').val()); 
     }); 
    }); 
</script> 

<input type="text" id="msg" /> 
<input type="button" id="broadcast" value="broadcast" /> 

<ul id="messages"> 
</ul> 

錯誤:

SignalR:必須在數據可以發送之前開始連接。 。發送()SignalR拒絕工作

之前調用。開始()我試了一下,到目前爲止:

<configuration> 
    <system.webServer> 
     <modules runAllManagedModulesForAllRequests="true"> 
     </modules> 
    </system.webServer> 
</configuration> 

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script> 

這兩種解決方案(https://github.com/SignalR/SignalR/wiki/Faq)沒有解決我的問題。 任何想法?謝謝。

回答

7

確保您正確配置的URL echo腳本:

var connection = $.connection('<%= ResolveClientUrl("~/echo") %>'); 

由於您使用echo不正確,因爲你的路由預計/echo/appname/echo如果應用程序中的虛擬主辦的~/Pages文件夾中目錄。

+0

非常感謝。 – user1027620