2012-06-20 3 views
9

내가 좌표는 Google 또는 유사에 함수 호출을 사용하여 검색됩니다Node.js에서 클라이언트 측 JavaScript와 어떻게 통신합니까? 예를 들어

function getLocation() { 
    var latitude = ...; 
    var longitude = ...; 
} 

자바 스크립트 기능이 클라이언트 측을 가정합니다. 이 정보를 Node.js 서버로 어떻게 전송할 수 있습니까?

+0

왜 어떤 종류의 템플릿 시스템을 사용하지 않습니까? 그것은 당신의 인생을 더 편리하게 만들 것입니다 – elclanrs

+3

@elclanrs 어떻게 templating 가능성이 도움이 될까요? – Raynos

답변

12

가장 쉬운 방법은? Express을 설정하고 클라이언트 측 코드를 Ajax를 통해 통신하도록하십시오 (예 : jQuery 사용).

클라이언트 측에
(function() { 
    var app, express; 

    express = require("express"); 

    app = express.createServer(); 

    app.configure(function() { 
    app.use(express.bodyParser()); 
    return app.use(app.router); 
    }); 

    app.configure("development", function() { 
    return app.use(express.errorHandler({ 
     dumpExceptions: true, 
     showStack: true 
    })); 
    }); 

    app.post("/locations", function(request, response) { 
    var latitude, longitude; 
    latitude = request.body.latitude; 
    longitude = request.body.longitude; 
    return response.json({}, 200); 
    }); 

    app.listen(80); 

}).call(this); 

,이처럼 호출 할 수 있습니다 :

var latitude = 0 
    , longitude = 0; // Set from form 

$.post({ 
    url: "http://localhost/locations", 
    data: {latitude: latitude, longitude: longitude}, 
    success: function (data) { 
    console.log("Success"); 
    }, 
    dataType: "json" 
}); 

참고이 코드는 단순히 예이다; 당신은 오류 처리 등을 해결해야합니다.

희망이 도움이됩니다.

4

웹 응용 프로그램의 다른 서버 측 프로그램과 마찬가지로 HTTP 요청을 작성합니다.

XMLHttpRequest object을 사용하거나 <form>을 생성 한 다음 제출하거나 다양한 방법을 사용할 수 있습니다.

+3

또는 웹 소켓을 엽니 다. – Raynos

2

(소프트) 실시간 기능이 필요한 경우 Socket.io library을 사용하는 것이 좋습니다. 소켓을 사용하면 노드가 클라이언트 사이드 스크립트로 데이터를 보낼 수도 있습니다.

+0

그는 아마도 socket.io가 필요하지 않을 것입니다. – Raynos

+5

하하, 왜 Quentin의 게시물에 WebSockets을 언급 했습니까? :디. 바로 socket.io가 제공하지만 cross-browser를 지원합니다. –

1

나는 NowJS이 당신에게 가장 적합하다고 생각합니다. 예 :

// On the Node.JS server 

var nowjs = require("now"); 
var everyone = nowjs.initialize(httpServer); 

everyone.now.getServerInfo = function(callback){ 
    db.doQuery(callback); 
} 

// In the browser 

<script> 

now.getServerInfo(function(data){ 
    // data contains the query results 
}); 

</script> 

당신은 서버와 다른 방법으로 주위에 클라이언트에서, 공통 네임 스페이스 (즉 now 개체)에 변수와 함수를 넣을 수 있습니다.

+0

nowjs는 데이터의 작은 조각을 가져와야 만한다면 복잡한 솔루션입니다 – Raynos

+0

. 그러나 그는 단지 몇 가지 데이터 만 필요하다고 말하지는 않습니다. 그는 단지 예제를주었습니다 –

+1

Nowjs.com 서버가 다운되었고 github 코드가 2 년 이상되었습니다. 또한'npm install now '를 실행하는 데 실패하여 파이썬을 컴파일해야합니다. – shailenTJ