【发布时间】:2019-06-29 19:11:58
【问题描述】:
我想将数据从我的 PHP 服务器 发送到我在 NodeJS 上运行的 Socket.IO 服务器。
在本地主机上一切正常(使用 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!")
}
}
}
}
【问题讨论】:
-
请定义“它不再起作用”。会发生什么?你得到什么错误?
-
@ceejayoz PHP 和 NodeJS 之间建立了连接,但
s.on('data', function(buf) {部分没有执行,因为它没有获取数据。所以什么也没发生,服务器继续运行。 -
我怀疑问题与 SSL 有关,这可能是 localhost 和服务器之间的配置差异。也许有防火墙阻止了流量。
-
PHP 与 SSL 的运行没有任何不同。它是否适用于与服务器的 HTTP 连接而不是 HTTPS?