Servlets grails中的文本/事件流从头开始呈现(无插件)
要使用push方法,我们使用著名的JS对象EventSource: 这是易于开发的客户端部分:Servlets grails中的文本/事件流从头开始呈现(无插件),servlets,grails,controller,push,Servlets,Grails,Controller,Push,要使用push方法,我们使用著名的JS对象EventSource: 这是易于开发的客户端部分: var eventSource = new EventSource("controller/action"); eventSource.onmessage = function(event) { document.getElementById('foo').innerHTML = event.data; }; 然而,我很难
var eventSource = new EventSource("controller/action");
eventSource.onmessage = function(event) {
document.getElementById('foo').innerHTML = event.data;
};
然而,我很难在服务器部分(Grails)中配置push方法
当我在Servlets开发的JEE应用程序中查看时,我可以看到服务器部分如下所示:
在客户部分:
var eventSource = new EventSource(baseURL+"external/push");
eventSource.onmessage=function(e){
console.log(e.data.dt);
}
不幸的是,我在控制台上没有得到任何结果 我不确定render方法是否能正确处理
“文本/事件流”
,但您可以直接访问操作中的响应
对象:
def push() {
//content type must be set to text/event-stream
response.setContentType("text/event-stream");
//encoding must be set to UTF-8
response.setCharacterEncoding("UTF-8");
for(int i=0; i<10; i++) {
response.outputStream.write("data: "+ System.currentTimeMillis() +"\n\n");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
response.outputStream.flush()
}
def push(){
//内容类型必须设置为文本/事件流
response.setContentType(“文本/事件流”);
//编码必须设置为UTF-8
响应。setCharacterEncoding(“UTF-8”);
对于(int i=0;i我不确定渲染方法是否正确处理'text/event stream'
,但您可以直接访问操作中的响应
对象:
def push() {
//content type must be set to text/event-stream
response.setContentType("text/event-stream");
//encoding must be set to UTF-8
response.setCharacterEncoding("UTF-8");
for(int i=0; i<10; i++) {
response.outputStream.write("data: "+ System.currentTimeMillis() +"\n\n");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
response.outputStream.flush()
}
def push(){
//内容类型必须设置为文本/事件流
response.setContentType(“文本/事件流”);
//编码必须设置为UTF-8
响应。setCharacterEncoding(“UTF-8”);
对于(int i=0;idef push={
response.setContentType(“文本/事件流”);
对于(def i=0;idef push={
response.setContentType(“文本/事件流”);
对于(def i=0;我知道这个方法,我也使用过它,但是,我想使用render render的优雅语法(contentType:'text/event stream'){}我知道这个方法,也使用过它,但是,我想使用render render的优雅语法(contentType:'text/event stream'){}你可能想解释你的答案,让提问者了解哪里出了问题。你可能想解释你的答案,让提问者了解哪里出了问题
def push() {
//content type must be set to text/event-stream
response.setContentType("text/event-stream");
//encoding must be set to UTF-8
response.setCharacterEncoding("UTF-8");
for(int i=0; i<10; i++) {
response.outputStream.write("data: "+ System.currentTimeMillis() +"\n\n");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
response.outputStream.flush()
}
def push = {
response.setContentType("text/event-stream");
for(def i=0;i<10;i++) {
render("data $i: ${System.currentTimeMillis()}\n");
sleep(1000)
}
}