Sending messages from PHP to Node.js

后端 未结 6 2006
终归单人心
终归单人心 2020-12-04 20:25

How to send messages from php to node.js? I have a linux server running php and node.js.

When a user completes a transaction (via php), I\'d like send a message f

6条回答
  •  醉梦人生
    2020-12-04 20:30

    I found such problem can be solved simply by using the Express framework. Let's suppose php sends a json message to the node server and the server replies with ok.

    In app.js

    var app = require('express')();
    var http = require('http').Server(app);
    var io = require('socket.io')(http);
    var bodyParser = require('body-parser')
    app.use(bodyParser.json());
    
    app.post('/phpcallback', function(req, res) {
        var content = req.body;
        console.log('message received from php: ' + content.msg);
        //to-do: forward the message to the connected nodes.
        res.end('ok');
    });
    
    http.listen(8080, function(){
      var addr = http.address();
      console.log('app listening on ' + addr.address + ':' + addr.port);
    });
    

    In test.php

     "Robot", "msg" => "Hi guys, I'm a PHP bot !");                                                                    
    $data_string = json_encode($data);
    
    $ch = curl_init('http://localhost:8080/phpcallback');                                                                      
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");                                                                     
    curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);                                                                  
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);                                                                      
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(                                                                          
        'Content-Type: application/json',                                                                                
        'Content-Length: ' . strlen($data_string))                                                                       
    );                                                                                                                   
    
    echo curl_exec($ch)."\n";
    curl_close($ch);
    
    ?>
    

    Here we have also a more detailed example where a php script could drop a message to the users of a specific chat room.

    https://github.com/lteu/chat


    My personal impression about Redis approach: Cumbersome. You need to run Apache, nodeJS and Redis, three servers together in the same. And PubSub mechanism is quite different from the emit of socket.io, so you need to see if it is compatible with your existing code.

提交回复
热议问题