この例は、本の例に基づいていRestlet in Action
ます。
私が試したら
public class StreamResource extends ServerResource
{
@Get
public Representation getStream() throws ResourceException, IOException
{
Representation representation = new WriterRepresentation(MediaType.TEXT_PLAIN)
{
@Override
public void write(Writer writer) throws IOException
{
String json = "{\"foo\" : \"bar\"}";
while (true)
{
writer.write(json);
}
}
};
return representation;
}
}
それは機能し、json 文字列をクライアントに継続的に送信します。
このようにwhileループに遅延を導入すると
String json = "{\"foo\" : \"bar\"}\r\n";
while (true)
{
writer.write(json);
try
{
Thread.sleep(250);
}
catch (InterruptedException e)
{}
}
クライアントが 1 秒間に 4 回データを取得することを期待していましたが、何もクライアントに到達していないようです。
の導入がそれを行う理由を誰か説明できますThread.sleep()
か? クライアントへのデータのストリーミングに遅延を導入する良い方法は何ですか?