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


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

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

我找不到任何工作示例。顺便说一句,PHP 将发送到 Node.js 的数据将以 JSON 形式出现。有人在这里问:NodeJS从PHP服务器接收数据,但我无法理解它是如何工作的。

下面是

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

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

    { "消息": "你好世界"}

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

您正在创建的是一个简单的 REST API。要了解有关如何使用 Node 执行 REST API 的更多信息.js并了解我发布的示例应用程序中发生了什么,您可以谷歌"Node.js rest api 教程"。您通常必须挑选您阅读的内容,因为一些教程将解释如何设置数据库等。下面是一个介绍上面示例中大部分操作的内容。