2014-10-29 1 views
2

저는 SignalR을 사용하여 백엔드 서버와 통신하는 자바 스크립트 클라이언트에서 작업하고 있습니다. 기본 개념은 클라이언트에서 서버에 대한 원격 프로 시저 호출을 수행 할 수 있고 그 반대의 경우도 가능하다는 것입니다. 나는 다음과 같은 매개 변수를 사용하지 않는 서버 메소드를 호출하기위한 적절한 추상화가 :여러 개의 인수를 서버에 보내려면 적용을 사용하십시오.

myInvoke: function (methodName, callback) { 
      proxy.invoke(methodName) 
       .done(function (result) { 
        $rootScope.$apply(function() { 
         if (callback) { 
          callback(result); 
         } 
        }); 
       }); 
     } 

중요한 부분은 문자열로 호출 할 서버 메소드의 이름을 사용 proxy.invoke(methodName) 서비스를 제공합니다.

프록시는 여러 인수를 호출하여 호출 할 수도 있습니다. SignalR documentation에서 몇 가지 예 : 나는했습니다

myInvoke: function (methodName, args, callback) { 
      proxy.invoke(methodName, args)... 

: 내가 성취하고 싶은 것은 인수가 허브에 전달해야 인수의 수는 더이 같은입니다

// one parameter 
contosoChatHubProxy.invoke('newContosoChatMessage', { UserName: userName, Message: message}) ... 

// two parameters 
contosoChatHubProxy.invoke('NewContosoChatMessage', userName, message) ... 

적용 방법에 대해 읽었지만 자바 스크립트는 매우 약하고 구현 된 구현을 생각해 낼 수 없었습니다.

+0

인수 그냥 JS 객체가 너무 빈 객체에있는 객체와 기본을 통과하고 당신이 사업에 있어야합니다. 적용을 사용해야하는 유일한 이유는 기본 매개 변수 집합을 전달하려는 경우입니다. –

+0

@GordonBockus 그때 호출에 10 개의 인수를 전달하면 어떻게 작동하는지 이해할 수 없습니다. 그것들을 모두 어떻게 처리해야하는지 어떻게 알 수 있습니까? –

답변

2

내 이전 댓글을 무시하십시오. 나는 당신이 포함 된 SignalR doc을 잘못 읽었습니다. 기본적으로 나는 항상 하나의 객체 매개 변수를 전달할 수 있다고 가정하고있었습니다.

apply를 사용하는 방법은이 함수를 사용하여 현재 함수에서 invoke 함수로 인수를 전달하는 방법을 참조하십시오.

http://jsbin.com/juqanigulo/1/edit?html,js,console,output

+0

안녕하세요, 코드를 약간 변경하여 작동되도록해야했습니다. 콜백은 RPC 호출에서 반환 된 값에 대해 작동하는 데 사용되는 SignalR 서버로 전달 될 필요가 없으므로 args의 일부일 필요는 없습니다. 또한 (null, args) 대신 apply (proxy, args)를 수행해야했지만, 이후에는 원하는대로 처리했습니다. 고마워요 :) –

관련 문제