使用Node.js在服务器端保存客户端数据

时间:2014-08-04 20:03:56

标签: javascript ajax node.js file-io

我一直在我的机器上试验Node.js一段时间,我发现我对HTTP请求,XHR对象等的知识非常缺乏。所以在使用Node时一直在唠叨我的主要事情是我似乎无法理解如何从客户端到服务器(除了简单的GET请求)之外的通信,反之亦然。让我想到这个问题的是我最近的项目,这是一个简单的2人棋牌游戏(没有AI对手)。

我想要做的是能够将游戏板数据(JSON字符串)发送到服务器并将数据保存到文件中。我理解如何在客户端使用XHR对象获取文件内容。我也了解如何使用Node的fs模块在服务器端创建和读取文件。我不明白的是如何使用XHR对象将字符串发送到服务器并让Node进程并将其保存到文件中。甚至可以用这种方式使用客户端代码调用服务器端代码吗?试图通过XHR对象向服务器发送一个不正确的方法吗?

如果我要求的主题过于宽泛,我也会接受有关服务器和客户端通信主题的链接和书籍。

2 个答案:

答案 0 :(得分:2)

您可以使用XHR在POST有效负载中发送带有(例如)JSON数据的HTTP请求。

然后,您可以编写处理此请求的服务器端Node.js代码,读取有效负载,并根据数据执行任何操作。

答案 1 :(得分:2)

扩展SLaks回答一下:

假设您在客户端上使用jQuery并在服务器上使用express(两者都是有用的框架,以避免重新发明低级别的东西),您可以这样做。

<强>客户端

$.ajax({
  type: "POST",
  url: "http://www.yourserver.com:3000/some/path",
  data: { ...chessdatahere... }
}).done(function(msg) {
  alert("Data Saved: " + msg);
});

服务器

var fs = require('fs');
var express = require('express');
var bodyParser  = require('body-parser');
var app = express();

app.use(bodyParser.json());
app.post('/some/path', function(req, res) {
  fs.writeFile('filename', res.body, function(err) {
    if (err) {
      res.send('Something when wrong');
    } else {
      res.send('Saved!');
    }
  })
});

app.listen(3000);

(请注意,代码尚未经过测试,但至少应该显示一般概念。)