通过PHP调用NodeJS函数(fsocketopen)

问题描述 投票:0回答:2

我需要调用并将参数传递给NodeJS套接字服务器。

我确认服务器运行良好。现在我需要创建PHP脚本来调用该函数。

我的NodeJS代码是这样的,

var user = {};

socket.sockets.on("connection", function(client){
         client.on("messageToClient", function(uid, msg){  // I need to call this method
        user[uid].send(msg);
    });
});

PHP ::

$fp = fsockopen("10.0.111.10","3000",$errno,$errstr, 30);

if(!$fp){
    echo "{$errno} ({$errstr}) <br />";
}else{
$uid_parameter = 'ABC';
$msg_parameter = 'HELLO';
    $out = "HOW TO CALL NodeJS messageToClient Method AND PASS PARAMETER?";
fwrite($fp,$out);
fclose($fp);
}
php node.js
2个回答
1
投票

更优雅的解决方案是在Nodejs或PHP中全部完成。数据库交互也是如此。 NodeJS可以与几乎每种类型的常用数据库进行交互。这将省去您必须实施的代码的麻烦。


0
投票

我知道这个问题很旧,但是互联网上还没有内容,所以我将答案留给以后的用户。

PHP:

function sio_message($message, $data) {
    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    $result = socket_connect($socket, '127.0.0.1', 9501);
    if(!$result) {
        die('cannot connect '.socket_strerror(socket_last_error()).PHP_EOL);
    }
    $bytes = socket_write($socket, json_encode(Array("msg" => $message, "data" => 
    $data)));
    socket_close($socket);
}

NODE.JS:

var express = require('express');
var app = require('express')();
var server = require('http').Server(app);

server.on("connection", function(s) {
    //If connection is from our server (localhost)
    if(s.remoteAddress == "::ffff:127.0.0.1") {
        s.on('data', function(buf) {
           console.log('data arrive');
            var js = JSON.parse(buf);
            console.log(js.data); //Done
       });
    }
});

现在您可以只使用sio_message('anything','more data');从节点发送数据]

© www.soinside.com 2019 - 2024. All rights reserved.