0

2 つの一見同一のコード チャンクがあります。最初のものでは、クライアント側のファイル (Server Sent Event 接続を使用) は JSON データを適切に受信して表示できますが、他のコードではそれができません。私は一生、理由を理解することはできません。

最初の作業コードは次のとおりです。

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

function sendMsg($id , $msg) {
  echo "id: $id" . PHP_EOL;
  echo "data: {\n";
  echo "data: \"name\": \"Bob\", \n";
  echo "data: \"msg\": \"$msg\", \n";
  echo "data: \"id\": $id\n";
  echo "data: }\n";
  echo PHP_EOL;
  ob_flush();
  flush();
}

sendMsg(1, 'hello');

クライアント側のファイルでは、data.name に「Bob」が表示され、data.msg に「hello」が表示されます。

これは非動作コードです:

header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$out .= "id: 1" . PHP_EOL;
$out .= "data: {\n";
$out .= "data: \"name\": \"Bob\",\n";
$out .= "data: \"msg\": \"hello\", \n";
$out .= "data: }\n";
$out .= PHP_EOL;
echo $out;
ob_flush();
flush();

私にはまったく同じように見えますが、何も表示されません! 何を与える?動作しないコードを翻訳して、代わりにすべての「エコー」ステートメントを使用することさえ試みた.out =ので、最初のものとほぼ同じでした....エラー/違いが見られる人はいますか?

助けてくれてありがとう!

4

1 に答える 1