2012-04-06 4 views
3

MVC3 및 signalr과 관련된 정말 이상한 문제가 있습니다. 간단한 허브가 있습니다.MVC3의 SignalR, 타이밍 및 시작/연결 문제?

일부 클라이언트 측 코드;

var connection = $.connection.test; 
connection.start(); 
connection.getStuff(); 

오류가 발생합니다.

형식 오류 : 내가 대신

var connection = $.connection("test"); 

내가 다른 오류가 발생 할 경우 개체 번호가있는 방법 '시작'

이 없습니다;

형식 오류 : 4

POST http://localhost:63021/Controller/test/negotiate 405 (방법은 허용되지 않음)

그것의 협상을 시도 참고 : 개체 번호가있는 방법 'getStuff'JQuery와-1.6.4.min.js이 없습니다 어떤 이유로 컨트롤러 아래에?

등록해야하는 경로가 있습니까? 내가 알지 못하는 다른 마술?

업데이트 그래서 콘솔로 비트를 재생하면 - 첫 번째 버전은 실제로 내가 호출 할 수있는 getStuff()가있는 객체를 만듭니다. 하지만 start()를 먼저 호출해야하기 때문에 signalr이 발생합니다 - 존재하지 않습니다! 두 번째는 시작()이 않는 개체를 생성하지만 getStuff() ... 2 은 $ .connection.hub.start 대신 하 시도

UPDATE가 그다지. 이것은 콘솔에서 작동하지만 페이지 onload ..에서 작동하지 않는 것 같습니다 허브 호출이 이루어지기 전에 isnt가 끝난 것 같습니다. 비동기입니까?

+0

은 확실히 말할 수를 -하지만 두 번째 경우에 GetStuff''대 소문자를 구분합니다'getStuff' 수 있습니다. – vcsjones

+0

어느 쪽도 작동하지 않으며 협상 URL은 존재할 수 없으므로 (허브가 루트에 있음) 404를 반환합니다. – XeroxDucati

답변

7

SignalR 연결 시작은 즉각적인 것이 아닙니다. 연결이 아직 설정되지 않은 경우 connection.GetStuff();으로 전화하면 실패 할 수 있습니다. 허브에 대한 연결이 설정된 후에이 코드를 실행하려면 콜백 함수를 사용해야합니다.

var connection = $.connection.test; 
$.connection.hub.start(function(){   
    // By convention all exposed hub methods start with lowercase 
    connection.getStuff(); 
}); 

허브 빠른 시작 : SignalR에서 https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs

에서 자세히 살펴 자바 스크립트 클라이언트 : "(@의 Url.Content"

VAR 연결 = $ .connection (: https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubs

+0

시도한 후 코드에 타이머를 설정하십시오. 그 start() 메소드는 이렇게 느리다. 동일한 정확한 코드이지만 mvc 대신 webforms에서 0.2 초 만에 연결됩니다.MVC에서, 3-5 초 .. 아마 MVC 측에서 충돌이 있을까요? – XeroxDucati

0

이 시도 ~/echo ")");

1

당신은 허브 부분을 추가해야합니다

$.connection.hub.start();