PHP socket_connect是否使用SSL?

时间:2019-02-05 21:31:15

标签: php node.js sockets ssl

我想将数据从 PHP服务器发送到运行在NodeJS上的 Socket.IO服务器

在localhost 上一切正常(使用http://)

但是现在,服务器正在通过安全连接在网络上运行

https://example.com ...不再起作用。


Apache服务器正在运行,并且已在端口 443

上保护

NodeJS / SocketIO服务器位于端口 1337


PHP

function sendData() {
        $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
        $result = socket_connect($socket, '127.0.0.1', 1337);
        if(!$result) {
            return;
        }

        $data = Array();
        $data["test"] = "Hello";

        $bytes = socket_write($socket, json_encode(Array("do" => "sendSomeData", "data" => $data)));
        socket_close($socket);
}

NodeJS

var server = https.createServer({
    key: fs.readFileSync('/home/certificates/certkey.key'),
    cert: fs.readFileSync('/home/certificates/cert.crt'),
    ca: fs.readFileSync('/home/certificates/chained.crt'),
}, app);

server.listen(1337, function() {
    console.log('listening on *:1337');
});

server.on("connection", function(s) {

    if (s.remoteAddress == "::ffff:127.0.0.1") {
        // UNTIL THIS, EVERYTHING WORKS

        s.on('data', function(buf) {
            // BUT THIS WON'T GET CALLED
            // USING HTTPS

            var js = JSON.parse(buf);
            console.log("Received data")

            if (js.do == "sendSomeData") {
                console.log("Yeah, 'Hello' arrived!")
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

由于找到解决方案而回答了我自己的问题:

因此,如果服务器在https上运行,则不会接收任何数据。

因此,我打开了另一端口上的另一台服务器


http

它现在可以完美运行。