たとえば、クライアント側に JavaScript 関数があるとします。
function getLocation() {
var latitude = ...;
var longitude = ...;
}
座標は、Google などへの関数呼び出しを使用して取得されます。この情報を Node.js サーバーに送信するにはどうすればよいですか?
たとえば、クライアント側に JavaScript 関数があるとします。
function getLocation() {
var latitude = ...;
var longitude = ...;
}
座標は、Google などへの関数呼び出しを使用して取得されます。この情報を Node.js サーバーに送信するにはどうすればよいですか?
最も簡単な方法は?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"
});
このコードは単なる例であることに注意してください。エラー処理などを行う必要があります。
お役に立てば幸いです。
Web アプリケーションの他のサーバー側プログラムと同じように、HTTP 要求を作成します。
XMLHttpRequest オブジェクトを使用するか、 を生成し<form>
てから送信するか、その他のさまざまな方法でこれを行うことができます。
(ソフト) リアルタイム機能が必要な場合は、Socket.io ライブラリの使用をお勧めします。ソケットを使用すると、ノードはデータをクライアント側スクリプトにプッシュすることもできます。
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
オブジェクト) に、クライアントからサーバーへ、およびその逆に配置できます。
RPCが必要だと思います。node modules セクションには、RPC をカバーするセクションもあります。DNodeをご覧になる必要があると思います。ブラウザ セクションの DNode を見てください。