DNode 클라이언트 역할을하는 PHP 스크립트가 있습니다. 그렇다면 PHP 클라이언트에서받는 코드를 평가하고 DOM을 HTML로 반환하는 Node.js Dnode 서버가 있습니다. 그러나 Node.js는 나에게 이상하게 행동합니다 (Node.js 초보자에게만 해당). 반환 문자열이 비어 있지 않아도 아무 것도 반환하지 않습니다. 내 코드는 다음과 같습니다 : DNode-PHP library를 사용Node.js 함수가 JSDom serializeDocument 결과를 반환하지 않는 이유는 무엇입니까?
PHP 클라이언트 코드 :
<?php
require(__DIR__.'/../../vendor/autoload.php');
$loop = new React\EventLoop\StreamSelectLoop();
$dnode = new DNode\DNode($loop);
$dnode->connect(7070, function($remote, $connection) {
$js = 'var a = document.createElement("A");';
$js.= 'document.getElementsByTagName("body")[0].appendChild(a);'
$remote->zing($js, function($n) use ($connection) {
print_r($n);
$connection->end();
});
});
$loop->run();
?>
Node.js를 서버 코드 :
var dnode = require('dnode');
var jsdom = require("jsdom");
var server = dnode({
zing: function (n, cb) {
var document = jsdom.jsdom('<!DOCTYPE html>');
var window = jsdom.parentWindow;
eval(n);
var html = jsdom.serializeDocument(document);
// console.log(html);
cb(html);
}
});
server.listen(7070);
을 console.log() 명확하게 결과를 예상 무엇 <!DOCTYPE html><html><head></head><body><a></a></body></html>
를 출력합니다. 그러나 결코 PHP 클라이언트에 도달하지 않습니다. 그러나 무엇이 이상한 지, cb(html);
을 cb('test');
으로 변경하면 PHP는 "test"를 출력합니다. 따라서 문제는 Node.js의 어딘가에 있어야합니다. 그러나 나는 어디에서 찾을 지 모른다.
미리 알려 주셔서 감사합니다.
감사합니다. 당신은 그것을 찍었습니다. 이제 예상대로 작동합니다! – Frodik