在Node.js中,我如何与客户端JavaScript进行通信?

例如,假设客户端我有一个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" }); 

注意这个代码只是一个例子; 你将不得不解决error handling等

希望有所帮助。

通过发出HTTP请求,就像在Web应用程序中使用其他服务器端程序一样。

您可以使用XMLHttpRequest对象 ,或通过生成一个<form>然后提交它或其他各种方法。

如果您需要(软)实时function,我推荐使用Socket.io库 。 使用套接字,节点也可以将数据推送到客户端脚本。

我认为NowJS将会是你的最佳select。 例:

 // 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> 

你可以把variables和函数放在一个通用的命名空间(即now对象),从客户端到服务器,反之亦然。

我认为你需要RPC 。 节点模块部分也有一个覆盖RPC的部分 。 我想你应该看看DNode 。 查看浏览器部分的DNode 。