【问题标题】:How Node.js + Socket.io receive data from PHPNode.js + Socket.io 如何从 PHP 接收数据
【发布时间】:2015-03-02 02:53:47
【问题描述】:

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

【问题讨论】:

    标签: javascript php json node.js sockets


    【解决方案1】:

    这是一个简单的 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):

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

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

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

    您正在创建的是一个简单的 REST api。要了解有关如何使用 Node.js 执行 REST api 的更多信息并了解我发布的示例应用程序中发生的事情,您可以在 Google 上搜索“Node.js REST api 教程”。您通常必须挑选您阅读的内容,因为一些教程将解释如何设置数据库等。Here's one 会介绍上面示例中完成的大部分内容。

    【讨论】:

    • 哇!这次真是万分感谢。我只需要处理 Socket.io 逻辑。
    • 但是,我在发送 JSON 时只收到Undefined。?
    • 我用Postman chrome extension 测试了示例代码,至少可以使用它。 “未定义”是打印到控制台还是对 POST 的响应?如果它被打印到控制台,请尝试将console.log(body.message); 更改为console.log(body);。此外,请确保为您的请求设置了 Content-Type: application/json 标头。
    猜你喜欢
    • 2011-08-19
    • 2013-03-06
    • 1970-01-01
    • 2012-10-11
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多