2012-04-04 2 views
1

웹 페이지 또는 JavaScript 코드에서 RPC (Remote Procedure Call)를 수행하는 가장 좋은 방법은 무엇입니까? 가능한 경우 JavaScript로 유지하여 내 서버가 다운 된 경우 PHP에서 아무 것도하지 않고도 웹 페이지를 실시간으로 업데이트 할 수 있습니다. 그래도 JavaScript가 페이지 업데이트를 처리하기를 원합니다. 로컬에서 실행되는 파이썬 셸 스크립트 ... JavaScript에서 합법적입니까?RPC (원격 프로 시저 호출) 용 JavaScript 사용

요청을 처리하는 원격 시스템을 선호합니다. 그러나 XMLRPC 또는 JSONRPC가이 작업을 수행하는 방법에 대해 많은 이야기를하고 있습니다. 좋은 예제를 보지 못했습니다. Microsoft는 자신의 XMLhttprequest를 사용하여 제안하지만, ActiveX 호출을 사용하지 않거나 Internet Explorer 용 특수 코드가 필요하지 않은 것을 보지 못했습니다. 일부 Python/Ruby/C++ 명령을 전달하는 간단한 방법이 필요합니다. 웹 페이지의 코드.

파이썬 서버 코드 (A RPC 요청 대기) :

import xmlrpclib 
from SimpleXMLRPCServer import SimpleXMLRPCServer 
def my_awesome_remote_function(str): 
    return str + "awesome" 
server = SimpleXMLRPCServer(("localhost", 8000)) 
print "Listening on port 8000..." 
server.register_function(is_even, "is_even") 
server.serve_forever() 

예 자바 스크립트 코드 :

var client = rpc.server("http://localhost:8000/"); 
var my_local_variable = client.my_awesome_remote_function(param); 

거기 그 요청을 보낼 수있는 좋은 JSON/자바 스크립트 예를 들어 누군가가 날 지점 수 서버에 연결하고 해당 서버에서 일부 데이터를 다시 가져 옵니까?

감사합니다.

+0

정말 100 개의 자바 스크립트 요청에 대한 사이드 벤치 마크를보고 싶습니다 ... 하나는 PHP, Python, Ruby, Node.JS, Apache (CGI C++) 프로그램으로 이동하여 모두를 얻는 데 걸리는 시간을 봅니다. 답장은 요청 모델에 대해 더 많이 배울 수 있습니다. 나는 자바 스크립트에서 풀 바이너리 요청을 받고이를 루비/파이썬 등의 로컬 객체로 전달하는 방법을 아직 모르고있다. – htmlfarmer

답변

1

거의 작동하지 않습니다 : client.my_awesome_remote_function. PHP에는 __call과 같은 js에는 마법이 없습니다. 또한 원격 호출은 js에서 거의 비동기 적으로 콜백 (callback)이라는 아이디어를 사용하여 수행됩니다.이 콜백은 일부 작업을 마친 후에 호출됩니다.

var client = rpc.server("http://localhost:8000/"); 
var my_local_variable; 
client.rpc('my_awesome_remote_function', [param], function(result) { 
    my_local_variable = result; 
}); 

해당 통화에 대한 자습서를 쉽게 찾을 수 있습니다. 그냥 구글 "아약스 튜토리얼". 예 : http://www.w3schools.com/ajax/ajax_intro.asp (이벤트는 w3schools가 최고의 사이트가 아니며 일부 세부 정보에는 오류가 있지만 초보자에게도 유용합니다.)

모든 ajax 구현은 최신 Internet Explorer 용 XMLHttpRequest와 ActiveX 컨트롤을 모두 사용합니다.

이러한 요청을 동 기적으로 실행할 수는 있지만 사용자 환경에서 매우 나쁜 것으로 간주됩니다. 또한 어쨌든 콜백 개념을 다루어야합니다.

+0

마술은 \ _call이 아니지만 많은 JSON-RPC 클라이언트 라이브러리 (예 : 도장)는 JSON-RPC 웹 서비스에서 게시 한 SMD를 구문 분석하여 client.my_awesome_remote_function을 호출 할 수 있습니다. –

+0

메서드가 나열되면 물론 해당 js 함수를 생성 할 수 있습니다. 그럼에도 불구하고 이것은 콜백과 함께 실행되어야합니다. – kirilloid

+0

... 또는 'promise'에 대한 체인 메소드 호출 :-) jQuery가이를 지원하기 시작했다고 생각합니다. –