在 Node 中.js我如何与客户端 JavaScript 通信

In Node.js how do I communicate with client side JavaScript?

本文关键字:客户端 JavaScript 通信 Node js      更新时间:2023-09-26

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

请注意,此代码只是一个示例;您必须计算错误处理等。

希望有帮助。

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

您可以使用 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。节点模块部分还有一个涵盖 RPC 的部分。我想你应该看看DNode。看看浏览器部分的 DNode。