現在、私はJSON形式でデータを書き込んでいます。一度に1つのメッセージを次のように記述します。
String[] arr = strLine.split(",");
out.append("data: {\n");
out.append("data: \"c1\": " + arr[0].toString()+ ",\n");
out.append("data: \"c2\": " + arr[1].toString()+ ",\n" );
out.append("data: }\n\n");
out.flush();
しかし、今は、そのようなメッセージが5つある場合にのみout.flushを実行したいと思います。だから、どうすればこれを行うことができますか?Jsonメッセージを作成しますか?個別のデータ:{}本文。そして、そうする場合、javascriptを使用してクライアント側でc1、c2のペアにアクセスするにはどうすればよいですか?そして、選択肢は何ですか。
PS:私が5つの値を言うとき、私はc1とc2の値の5つのペアを意味します。
そして、私がこのようなことをした場合、クライアント側でjavascriptを使用して値にアクセスするにはどうすればよいですか?
out.append("data: [\n");
for(int j=0; j<5; j++) {
String[] arr = strLine.split(",");
if (j!=0) out.append(",\n");
out.append("\{"c1\": " + arr[0].toString()+ ",\n");
out.append(\"c2\": " + arr[1].toString()+"}" );
out.flush();
}
//HEY MR, LOOK BELOW ME
//HEY MR, LOOK BELOW ME
//HEY MR, LOOK BELOW ME
//HEY MR, LOOK BELOW ME
out.append("]\n"); <---- HEY RIGHT HERE
//HEY MR, LOOK ABOVE ME
//HEY MR, LOOK ABOVE ME
//HEY MR, LOOK ABOVE ME
//HEY MR, LOOK ABOVE ME
out.flush();
要求に応じてJSコードを動作させる(ボディロードでregisterSSE()を呼び出す):
function registerSSE(){
var source = new EventSource ('http://localhost:8080/SSE_Test1/ReadCsv');
source.addEventListener('message', function(e) {
var data = JSON.parse(e.data);
console.log(data.timestamp, data.c1, data.c2, data.c3, data.c4);
}
サーブレットでは、次の行を追加する必要があります。
response.setContentType("text/event-stream");