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

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

我找不到任何工作的例子。 BTW,PHP发送给Node.js的数据将以JSON格式。 有人问这里: NodeJS从PHP服务器接收数据,但我不明白它是如何工作的。

下面是一个简单的Node.js应用程序,它创build一个REST API,您可以将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. 创build一个新的目录,并在其中创build上述两个文件
  2. 运行npm install 。 这将读取package.json并安装所需的依赖项
  3. 运行node app.js
  4. 发送到URL http://localhost:3000/api/receive用POST http://localhost:3000/api/receive下面的JSON消息:

    {“message”:“Hello world”}

检查您运行node app.js的控制台输出。 它应该已经logging了“Hello world”消息。

你正在创build的是一个简单的REST API。 要了解更多关于如何使用Node.js来完成REST API的知识,并了解我发布的示例应用程序中发生的事情,可以参阅Google的“Node.js rest api tutorial”。 您通常必须挑选您阅读的内容,因为一些教程将解释如何设置数据库等。 下面是上述示例中大部分内容的一个示例。