2012-09-19 7 views
3

나는 다른 포트에서 두 Node.js를 httpservers를 실행하려면 :두 개의 node.js 서버?

나는 AppFog 호스팅에 포트 8888에 내 Node.js를 서버에 연결 안드로이드 응용 프로그램을 만들고 싶어
var http = require('http');   

var dbserver = http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/html'}); 
    res.write('<html><body><h2 align=center>TEST index.html.</h2></body></html>'); 
    res.end(); 
}); 

dbserver.listen(8888); 

var s = http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.write('hello world'); 
    res.end(); 
}); 

s.listen(8080); 

가 서버에 메시지를 보내 , 그리고 그것으로부터 응답을 받는다. 그리고 브라우저에서 내 서버를 열면 간단한 html 페이지 만 생깁니다. 하지만 내 코드는 작동하지 않습니다. 왜?

+2

무엇이 오류입니까? 서버에 텔넷 연결을하면 연결이됩니까? AppFog는 이러한 포트에 연결을 허용합니까? 그렇다면 (예, 예) 그러면 안드로이드 코드를 게시해야합니다. – weakwire

+0

글쎄, 내 안드로이드 애플 리케이션에 문제가 아니라 버튼을 클릭하고 포트 8888에 서버 사이트 test.rs.af.cm에 대한 연결을 열었습니다 HTTP 클라이언트를 생성한다고 생각합니다. AppFog 사이트에서 서버를 중지/시작/다시 시작하는 도구이며 서버가 중지 된 경우 시작되지 않습니다. "시작"힌트는 화면에 나타나며 사라지지 않습니다.포트 8088에서 브라우저로 내 서버에 연결하면 "AppFog 404 Not Found"라고 표시되고 telnet은 ".. 연결을 열 수 없습니다. 연결이 끊어졌습니다 ..."포트 8888에서 Titanium이 '보내기 오류입니다. 대상 서버가 실패했습니다. 응답 ' – Alex

+0

확인 그래서 거기에 AppFog 이러한 포트에서 들어오는 연결을 허용하지 않습니다 – weakwire

답변

2

음, 음, 음, 내가 AppFog에서 전자 메일 답변은이 같은 소리 지원했다했습니다.

// ----- -------------------------------------------------- ---------------

조 9 월 (19) 12시 반 (PDT) :!

안녕

아쉽게도 HTTP 트래픽 만 AppFog에서 지원되므로 웹 소켓과 UDP 트래픽이 작동하지 않습니다. 웹 사이트 지원은 우리의 로드맵에 있지만, 계속 지켜봐 주시기 바랍니다!

조 AppFog 지원

// ------------------------------------ ---------------------------------

그래서 문제는 Node.js에없고 내 코드,하지만 AppFog에. 도와 주셔서 대단히 감사합니다!

1

하나의 노드 응용 프로그램에서 서로 다른 두 개의 포트로 서로 다른 두 개의 서버를 실행할 수는 있지만 클라이언트 측 코드에서이 둘 모두에 액세스하려면 동일한 원본 규칙 문제가 발생할 가능성이 매우 높습니다 (예를 들어 한 서버에서로드 된 코드를 실행하는 브라우저는 일반적으로 다른 서버에 대한 AJAX 요청을 수행 할 수 없습니다. 동일한 URL의 두 개의 서로 다른 포트가 서로 다른 두 개의 원본으로 간주되기 때문입니다. 크로스 서버 연결 기능은 JSONP 요청을 포함하는 스크립트 요청과 Websocket 연결로 제한 될 것입니다 (비록 socket.io를 사용하고 있고 클라이언트가 웹 소켓을 지원하지 않는다면 socket .io 사용이 반드시 출처 간 작동하지 않습니다

+0

데이터베이스 (node.js) 쪽에서 정보를 얻을 수있는 안드로이드 응용 프로그램을 만들고 싶습니다. 그러면 데이터베이스에 연결됩니다. 그러나 데이터베이스의 정보는 웹 사이트에서 변경할 수 있으므로 내 사이트는 포트 8888에서 서버로/recv 정보를 보내지 않아도되며 내 앱은 포트 8080에서 서버와 통신 할 필요가 없습니다. – Alex

+0

귀하의 의견은 특별히 명확하지 않습니다. 어떤 상황에서 안드로이드 클라이언트 코드가 (귀하의) 서버에 접속해야합니까? 그리고 응답을 받았을 때 어떻게해야합니까? – ebohlman

+0

"데이터베이스"에 내 서버에 저장된 이미지 갤러리 및 이미지 설명을 만들고 있다고 가정 해 봅니다. 내 안드로이드 앱은 그룹별로 모든 이미지를 보여줍니다. 서버에 요청을 보내야합니다. 그 이미지와 설명을 얻거나 장치의 로컬 저장소에 이미지를 저장하고 거기에서 모든 정보를 얻을 수 있습니다. 저의 다른 클라이언트 측은 HTML 웹 사이트로, 새 이미지를 업로드하고 내 "데이터베이스"에 정보를 추가 할 수있게 해줍니다. – Alex

4

AppFog에, 당신은 여기 노드 응용 프로그램을 실행하기위한 몇 가지 문서를 볼 수 있습니다 http://docs.appfog.com/frameworks/node

하나 중요한 부분은 바인딩 할 포트를 결정하는 방법이다. 코드 샘플에는 s.listen (8080); 두 개의 응용 프로그램으로이 분할 유사 바운드 두 번째를해야합니다 있도록

s.listen(process.env.VCAP_APP_PORT || 8080); 

AppFog 현재 같은 응용 프로그램 오픈 두 개의 포트를 가지고 지원하지 않습니다하지만 지정하는 포트는 ENV var에 실제로있다 ENV var에에 :

dbserver.listen(process.env.VCAP_APP_PORT || 8888); 

AppFog 몇 개월 이내에 웹 소켓을 지원해야합니다하지만 오늘은 사용할 수 없습니다.