【发布时间】:2013-07-11 01:02:45
【问题描述】:
我正在尝试在 Play Framework 1.2.5
中实现 Server-Side Events 服务器我如何知道客户端是否调用了EventSource.close()(例如,或者关闭了它的浏览器窗口)?这是我正在使用的一段简化的服务器代码:
public class SSE extends Controller {
public static void updater() {
response.contentType = "text/event-stream";
response.encoding = "UTF-8";
response.status = 200;
response.chunked = true;
while (true) {
Promise<String> promise = Producer.getNextMessage();
String msg = await(promise);
response.writeChunk("data: " + msg + "\n\n");
}
}
}
Producer 应该处理队列,Promise 对象,并产生输出,但我应该知道何时停止它(填充它的队列)。如果输出流关闭,我预计response.writeChunk() 会抛出一些异常,但没有任何异常。
在http://www.playframework.com/documentation/1.2.5/asynchronous#HTTPresponsestreaming有一个类似的例子,它不处理 SSE,而只处理块。
【问题讨论】:
标签: java playframework server-sent-events