Node.js + Socket.io如何从PHP接收数据

时间:2015-01-04 10:56:18

标签: javascript php json node.js sockets

我有一个允许用户上传实时数据的小项目。由于我是一个PHP开发人员,我发现很难使用Node.js和Socket.io。我所做的是,我使用PHP作为我的应用程序的主要后端。它将从用户接收数据并将其保存到数据库。用户提交数据后,PHP会将数据发送到node.js应用程序,该应用程序将通过socket.io向所有连接的用户发出。但是我怎么能这样做呢?我的意思是node.js怎么会有没有新的数据?我希望PHP将数据(通过POST)发送到Nodejs,然后socket.io将广播它。

我找不到任何有效的例子。顺便说一句,PHP将发送给Node.js的数据将采用JSON格式。有人在这里问:NodeJS receiving data from PHP server但我无法理解它是如何运作的。

1 个答案:

答案 0 :(得分:3)

这是一个简单的Node.js应用程序,它创建一个可以将JSON发布到的REST API:

app.js:

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

app.use(bodyParser.urlencoded({ extended: true}));
app.use(bodyParser.json());
app.use(bodyParser.json({type: 'application/vnd.api+json'}));

var router = express.Router();

function dataHandler(req, res) {
    // the 'body' variable will contain the json you've POSTed:
    var body = req.body;
    // your socket.io logic would go around here.
    console.log(body.message);
    res.send("ok");
}

router.route('/receive')
    .post(dataHandler);
app.use('/api', router);

app.listen(3000, function() {
    console.log('Express started at port 3000');
});

的package.json:

{
  "name": "node-test",
  "descirption": "Node test",
  "version": "0.0.1",
  "private": true,
  "dependencies": {
    "body-parser": "^1.10.0",
    "express": "^4.4.3"
  }
}

要使其正常工作,请按照以下步骤操作(假设您已安装Node):

  1. 创建一个新目录,并在其中创建上述两个文件
  2. 运行npm install。这将读取package.json并安装所需的依赖项
  3. 运行node app.js
  4. 使用POST发送到URL http://localhost:3000/api/receive以下JSON消息:

    {   “消息”:“你好世界” }

  5. 检查控制台输出运行node app.js的位置。它应该记录“Hello world”消息。

    您正在创建的是一个简单的REST API。要了解有关如何使用Node.js执行REST apis并了解我发布的示例应用程序中发生的事情的更多信息,您可以使用Google的“Node.js rest api tutorial”。你通常不得不挑选你所读的内容,因为一些教程将解释如何设置数据库等,Here's one贯穿上述示例中的大部分内容。