从PHP发布到Node Js

时间:2019-12-19 07:14:21

标签: php node.js laravel express curl

我正在尝试在PHP laravel和Node js之间进行通信。

  $ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'http://mylocalip/publish');

curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_PORT, 8001);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($ch, CURLOPT_POST, true);
$pf = array('clientId' => '123123', 'command' => '{"cmd":"start"}');
curl_setopt($ch, CURLOPT_POSTFIELDS, $pf);
curl_exec($ch);
curl_close($ch);
    dd("Done");

这是m在php中用来发送数据的方式,因为它正在发送数据,但是在节点m上没有得到任何响应,尝试以角度的方式它可以按预期的方式进行响应,但是在php方面则没有响应。

var express = require("express");
var app = express();
    app.post("/publish", function(req, res) {

    console.log(req, res);
    console.log(req.body);
    });
});

我想在控制台中获取从php发送的数据。 laravel和node当前是否都可能在本地主机上使用不同的端口运行,这就是为什么它没有响应。如果是,那么angular如何将数据发送到节点。 谢谢

2 个答案:

答案 0 :(得分:0)

我们使用传统的Linux主机以及Apache,PHP和MySQL。 ... PHP和Node.js都可以进入相同的MySQL数据库,因此PHP和Node.js之间的整个通信都可以在数据库级别进行。如果确实不够用,您可以随时使用Memcached或Redis之类的缓存服务器。

答案 1 :(得分:0)

在PHP方面,将CURLOPT_HTTPHEADER设置为curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

如果您使用的是json内容类型,请确保帖子数据经过json编码:

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));

在NodeJS脚本中,如果您使用的是Express 4.16+,则可以使用内置的body-parser中间件:

app.use(express.json())app.use(express.urlencoded()),以便将数据从PHP附加到请求正文。

完整示例:

const app = require('express');

//depending on the content type you set in your PHP
app.use(express.json());
app.use(express.urlencoded());

app.post('publish', (req, res)=>{
  console.log(req.body);
})