Node.js + Socket.io如何从PHP接收数据
我有一个让用户上传实时数据的小项目。由于我是一名PHP开发人员,我发现使用Node.js和Socket.io非常困难。我所做的是,我使用PHP作为我的应用程序的主要后端。它将从用户接收数据并将其保存到数据库。用户提交数据后,PHP会将数据发送到node.js应用程序,该应用程序将通过socket.io发送给所有连接的用户。但我该怎么做?我的意思是如何node.js不会有新的数据?我希望PHP将数据(通过POST)发送到Nodejs,然后socket.io将播放它。Node.js + Socket.io如何从PHP接收数据
我找不到任何工作示例。 BTW,PHP发送给Node.js的数据将以JSON格式。有人问这里:NodeJS receiving data from PHP server但我不明白它是如何工作的。
这里有一个简单的Node.js应用程序创建一个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):
- 创建一个新目录,并在其中创建上述两个文件
- 运行
npm install
。这将读取package.json
并安装所需的依赖 - 运行
node app.js
-
发送到URL
http://localhost:3000/api/receive
以下JSON消息POST:{ “消息”: “世界,你好” }
检查您运行node app.js
的控制台输出。它应该记录“Hello world”消息。
你正在创建的是一个简单的REST api。要了解更多关于如何使用Node.js来完成REST API以及了解我发布的示例应用程序中发生了什么的信息,可以参阅Google'Node.js rest api tutorial'。您通常必须挑选您阅读的内容,因为某些教程将解释如何设置数据库等。Here's one需要完成上述示例中的大部分工作。
哇!这次真是万分感谢。我只需要处理Socket.io逻辑。 – user3569641 2015-01-04 11:58:30
但是,发送JSON时,我只收到'Undefined'。 – user3569641 2015-01-04 12:11:42
我使用[Postman chrome扩展](https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm)测试了示例代码,至少适用于此。 'Undefined'是否打印到控制台,还是对POST的响应?如果打印到控制台,请尝试将'console.log(body.message);'更改为'console.log(body);'。此外,请确保您已为您的请求设置了“Content-Type:application/json”标头。 – 2015-01-04 13:04:16