2010-05-25 3 views
0

XMLHttpRequest을 웹 클라이언트가 포함 된 장치의 응용 프로그램에 액세스하는 방법으로 사용하는 간단한 방법이 필요합니다. 나는 웹 서버에 들어오는 XMLHttpRequests을 다루는 애플리케이션을 얇고 가볍게 만드는 방법을 알아 내려고 혼란스러워하고있다.외부 응용 프로그램을 호출하는 XMLHttpRequest 처리

상황 :

  • (특히 ExtJS로) Ajax를 사용하여 웹 클라이언트가 전송 및 기존 임베디드 애플리케이션에 비동기 적으로받을 필요가있다. 이것은 두꺼운 클라이언트/씬 서버를 갖는 것만이 아니며 클라이언트는 응용 프로그램 상태에 대한 백그라운드 검사를 실행해야합니다.
  • 응용 프로그램은 알려진 명령, 이벤트 및 구성 값 집합과 함께 소켓 인터페이스를 노출 할 수 있습니다. 구성은 SQLite 데이터베이스에서 제공되므로 XML로 전송 될 수 있습니다.
  • 클라이언트와 앱 사이에 을 실행하는 lighttpd 웹 서버가 있습니다. 어떻게 든 번역을 처리합니다. 이 뭔가가입니다.

는 내가 원하는 생각하는 것 :

  • 이 Lighttpd는 외부 프로세스로가는 모든 XMLHttpRequest에 FastCGI를 사용할 수 있습니다. 이 프로세스는 HTML/XML을 이해하고 해당 언어와 응용 프로그램의 언어를 변환합니다. 클라이언트 (XMLHttpRequest 수신, 다음 알림을 사용할 수있을 때까지 응답하지 않음)로 푸시 알림을 시뮬레이트하는 사용자 지정 논리를 갖습니다.
  • C/C++. 임베디드 장치에 Java/PHP/Perl을 설치하지 않는 것이 좋습니다. 그래서 더 낮은 수준의 이해가 필요합니다.

어떻게하면됩니까? 내가 구문 처리를 할 필요가 없도록

  • 는 CGI 헤더와 HTML을 해석이 좋은 C++ 라이브러리인가, 난 그냥 요청/응답 내용을 처리 할 수 ​​있습니까?
  • XMLHttpRequest 및 CGI 인터페이스를 처리 할 때 서버 측에서 정확히 무슨 일이 일어나는지에 대한 좋은 언급이 있습니까?
  • 이 작업의 대부분을 수행하는 패키지가 있습니까? 아니면 처음부터 비 HTTP/CGI를 빌드해야합니까? 만약 내가 제대로 이해하고

답변

0

는 방법은 내가이 문제가 될 것 접근 3 층 (우리 모두가 약을 들어 본 3 층 버즈 단어에 너무 많은 끊지 마세요) :

  1. 브라우저의 JavaScript (ExtJs) 대화 XmlHttpRequest, raw (naked) 또는 래퍼를 사용하는 HTTP, Ajax는 웹 서버 (Lighttpd, Apache, ...)에 별 문제가되지 않습니다.
  2. 임베디드 장치의 앱이 소켓으로 대화 할 수 있기 때문에 웹 서버는 소켓을 사용하여 임베디드 장치와 통신합니다.
  3. JavaScript에 더 많은 비즈니스 로직을 넣고 Apache/Lighttpd 코드를 매우 얇게 유지하면 시간 초과가 발생하지 않도록 할 수 있습니다.

이렇게하면 이미 익숙한 모든 기술을 활용할 수 있습니다. 1 단계와 2 단계 사이의 Ajax는 새로운 것이 아니며 2와 3 사이의 소켓을 사용하십시오.

+0

소켓이 무엇인지 알고 있습니다. 문제는 HTTP가 서버로 전송되는 정보를 사용 가능한 비트로 변환하고 적절한 HTTP 응답을 생성하는 방법입니다. PHP와 같은 패키지를 설치하는 대신 C/C++에서 백엔드 프로세스를 구현하는 방법에 대한 좋은 자료를 찾지 못했습니다. – Ian

0

소켓을 모르는 것은 아닙니다. 방금 XML/HTML/Ajax/XmlHttpRequest/Java/PHP/Perl/C++/CGI 등 많은 단어를 듣고 더 간단하고 이해하기 쉬운 방법으로 문제를 설명 할 방법을 제안했습니다. 문제.

궁극적으로 임베디드 장치에서 데이터를 검색하고 브라우저에서 렌더링 한 다음 브라우저에서 웹 서버에 요청하도록하려면 웹 서버가 소켓을 사용하여 내장 된 장치와 통신하십시오. 브라우저와 서버간에 데이터가 전달되는 방식은 정상적인 HTTP, 더 이상 필요하지 않습니다. HTTP 대신 소켓을 제외하고 웹 서버와 임베디드 장치간에 동일합니다.

그래서 두 개의 숫자를 추가하는 것처럼 간단한 문제 만 해결하면됩니다. 이 2 개의 입력 번호가 웹 서버에 전달 된 다음 웹 서버가 추가가 수행되는 내장 장치로 전달됩니다. 결과는 렌더링을 위해 브라우저로 다시 웹 서버로 전달됩니다. 그렇게 많이 할 수 있다면 원하는 모든 곳에서 이미 데이터 흐름을 만들 수 있습니다.

데이터를 구문 분석하는 방법은 페이로드를 둘러싼 컨테이너를 포함 할 수있는 데이터 구조를 디자인하는 방법에 따라 다릅니다.

는 "... 어떤 HTTP 것은 정보의 사용 가능한 비트에 서버에오고, 적절한 HTTP 응답을 생성한다"

을 ...하지만 당신이에 HTTP 요청을 처리하는 방법보다 다른 아니다 귀하의 서버 측 언어를 사용하는 서버. 임베디드 장치는 C/C++로 프로그래밍하는 경우 대신 PHP 같은 패키지를 설치하는, C/C++에서 백엔드 프로세스를 구현하는 방법을

은 ...

, 당신은 어떻게 해야할지해야합니다 소켓 프로그래밍 C/C++. 웹 서버에서 소켓 프로그래밍 방법을 알아야합니다. 단, 서버 측 언어로되어 있어야합니다.

희망이 도움이됩니다.