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

How Node.js + Socket.io receive data from PHP

我有一个让用户上传实时数据的小项目。由于我是一名 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 但我不明白它是如何工作的。

这是一个简单的 Node.js 应用程序,它创建了一个 REST api,您可以 post JSON 到:

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. 将以下 JSON 消息发送至 URL http://localhost:3000/api/receive POST:

    { "message": "Hello world" }

检查 运行 node app.js 处的控制台输出。它应该记录 "Hello world" 消息。

您正在创建的是一个简单的 REST api。要详细了解如何使用 Node.js 执行 REST apis 并了解我 post 编辑的示例应用程序中发生的事情,您可以 Google 'Node.js rest api tutorial'.您通常需要仔细挑选您阅读的内容,因为一些教程将解释如何设置数据库等。Here's one 上面示例中完成的大部分内容。