Grails事件推送插件没有从服务器事件获得响应 [英] Grails Events Push plugin not getting a response from server event
问题描述
我一直试图让grails事件推送插件工作,但当调用 savedToDo
事件时似乎无法从服务器获取响应数据。我可以看到我的控制台中的日志传递给服务器的数据并执行服务代码,但客户端似乎没有收到响应。我的代码如下:
MyService.groovy
package eventspush
导入grails.converters.JSON
导入grails.events。*
类MyService {
//将接收来自'saveTodo'主题的客户事件
@Listener(namespace ='browser')
def saveTodo(地图数据){
log.info(data)
data.moreData = 有我们去...
事件('savedTodo',数据)//将在'savedTodo'主题
}
}
上触发已注册的浏览器$ c
$ b conf / MyEvents.groovy
events = {
savedTodobrowser:true,browserFilter:{message,request - >
return true
}
}
index.gsp p>
< html xmlns =http://www.w3.org/1999/xhtmlxml:lang =en> ;
< head>
< r:require modules =grailsEvents/>
< meta name ='layout'content ='main'/>
< r:脚本>
$(document).ready(function(){
/ *
为这个窗口注册一个grailsEvents处理程序,构造函数可以接受一个根URL
a path event-bus servlet和options。每个参数都有合理的默认值
* /
window.grailsEvents = new grails.Events($ {createLink(uri:'')},{logLevel: debug,transport:'websocket'});
var data = new Object();
data.name =某个名字
)grailsEvents.send('saveTodo',data); //将数据发送到服务器主题'saveTodo'
grailsEvents.on('savedTodo',函数(数据){
console.log(data)
},{});
});
< / r:script>
< / head>
我的问题是我没有看到控制台中记录的任何数据。是否有人知道我在做什么错?
编辑时,我弄清楚了什么是错误的,因此我已经更新了MyEvents.groovy,上面的代码是现在的工作
解决方案 所以我发现什么导致数据没有被推送到客户端。 b
我将 MyService.groovy
中的行编辑为
event('savedTodo',data)
到
事件(主题:'savedTodo',数据:数据)
现在按预期工作
I have been trying to get the grails events push plugin to work but cant seem to get response data from the server when the savedToDo
event is called. I can see the logs in my console for the data coming to the server and executing the service code, but the client doesnt seem to be getting back a response. My code is as follows :
MyService.groovy
package eventspush
import grails.converters.JSON
import grails.events.*
class MyService {
//will receive client events from 'saveTodo' topic
@Listener(namespace='browser')
def saveTodo(Map data){
log.info(data)
data.moreData = "There we go...."
event('savedTodo', data) // will trigger registered browsers on 'savedTodo' topic
}
}
conf/MyEvents.groovy
events = {
"savedTodo" browser: true, browserFilter: { message, request ->
return true
}
}
index.gsp
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<r:require modules="grailsEvents"/>
<meta name='layout' content='main'/>
<r:script>
$(document).ready(function () {
/*
Register a grailsEvents handler for this window, constructor can take a root URL,
a path to event-bus servlet and options. There are sensible defaults for each argument
*/
window.grailsEvents = new grails.Events("${createLink(uri: '')}", {logLevel:"debug", transport:'websocket'});
var data = new Object();
data.name="some name"
grailsEvents.send('saveTodo', data); //will send data to server topic 'saveTodo'
grailsEvents.on('savedTodo', function (data) {
console.log(data)
}, {});
});
</r:script>
</head>
My problem is that I am not seeing any data being logged in the console. Does anybody have any idea what I am doing wrong?
Edit, I have worked out what was wrong and I have updated the MyEvents.groovy accordingly, the above code is now working
解决方案 So I found out what what was causing the data not being pushed to the client.
I edited the line in MyService.groovy
from being
event('savedTodo', data)
to
event(topic:'savedTodo', data:data)
It is now working as expected
这篇关于Grails事件推送插件没有从服务器事件获得响应的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!