2013-11-02 1 views
2

Index.cshtmlSignalR 에코/협상을 찾을 수 없습니까?

@{ 
    ViewBag.Title = "Index"; 
} 
<script src="~/Scripts/jquery.signalR-2.0.0.min.js"></script> 
<script> 
$(function() { 
    var connection = $.connection('/echo'); 

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

    connection.start().done(function() { 
     $("#broadcast").click(function() { 
      connection.send($('#msg').val()); 
     }); 
    }); 

}); 
</script> 
<input type="text" id="msg" /> 
<input type="button" id="broadcast" value="broadcast" /> 

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

startup.cs

using Microsoft.Owin; 
using Owin; 
using UI; 

namespace UI 
{ 
    public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.MapSignalR(); 
     } 
    } 
} 

MyConnection.cs

public class MyConnection : PersistentConnection 
{ 
    protected override Task OnConnected(IRequest request, string connectionId) 
    { 
     return Connection.Send(connectionId, "Welcome!"); 
    } 

    protected override Task OnReceived(IRequest request, string connectionId, string data) 
    { 
     return Connection.Broadcast(data); 
    } 
} 

I가 signalR 새로운 해요.

http://localhost:49820/echo/negotiate?clientProtocol=1.3&_=1383403303981 404 (Not Found)

enter image description here

이의 원인은 무엇이며 어떻게 해결할 수 : I 프로젝트를 시작할 때 나는 오류가 다음과 같은거야? 나는이 문제에 대한 해결책을 찾을 수 없다. (.net framework 4.5 및 signalR 2.0)

+0

보기에 을 추가하는 것을 잊었을 것입니다. – Lin

+0

@Lin, 나는 그것을 추가했지만 작동하지 않습니다 ... –

답변

5

현재로서는 코드를 디버깅 할 수 없지만 가능한 두 가지 문제를 고려해야한다고 생각합니다.

1) 시작 허브 기능에서 "$ .connection.hub"가 누락되었습니다. 그리고 서버 측에서 클라이언트 측으로받은 메소드를 호출 할 때 'connection.client.received'를 추가해야합니다. 다음과 같아야합니다.

$(function() { 
    var connection = $.connection('/echo'); 

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

    $.connection.hub.start().done(function() { 
     $("#broadcast").click(function() { 
      connection.send($('#msg').val()); 
     }); 
    }); 

}); 

2) 영구 연결을 매핑해야합니다. 당신이 당신의 허브 시작 클래스에서 다음을 수행해야

RouteTable.Routes.MapConnection<MyConnection>("echo", "/echo"); 

그러나 SignalR 2.0 : 뭔가 같이해야 signalR 1.x에서 믿습니다. 아래는 단지 예입니다.

public class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      app.MapSignalR<MyConnection>("/echo"); 
     } 
+0

두 번째 주장이 작동합니다. 나는이 줄'app.MapSignalR();을'app.MapSignalR ("/ echo")로 바꿨고,' –

+0

이 작동한다. 고마워요 ... –

관련 문제