2011-11-14 2 views
4

Global.asax에 작업 거부 :

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

~/페이지/Messages.aspx을

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

myconnection.cs

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

ERROR :

SignalR : 데이터를 보내기 전에 연결을 시작해야합니다. 지금까지 시도 무엇 .send()SignalR는

전) (.start 전화 :

<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

당신이 제대로 echo 스크립트에 URL을 구성하는 것이 있는지 확인하십시오 :

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

당신은 당신의 라우팅 /echo 또는 /appname/echo 기대하기 때문에 응용 프로그램이 가상 내에서 호스팅되는 경우 echo이 잘못 사용하여 ~/Pages 폴더 안에 있기 때문에 예배 규칙서.

+0

대단히 감사합니다. – user1027620