我一直試圖讓grails事件推送插件工作,但似乎無法從savedToDo
事件被調用時從服務器響應數據。我可以看到我的控制檯中的日誌傳遞給服務器的數據並執行服務代碼,但客戶端似乎沒有收到響應。我的代碼如下:Grails事件推送插件沒有得到服務器事件響應
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>
我的問題是,我沒有看到在控制檯中記錄任何數據。有人知道我做錯了什麼嗎?
編輯,我已經制定了什麼是錯的,我也相應更新MyEvents.groovy,上面的代碼現在工作
的基本文件(這裏)(HTTPS:/ /github.com/smaldini/grails-events-push)沒有服務方法的返回類型。檢查它是否在沒有「def」部分的情況下工作。 – uchamp 2013-02-19 06:07:05
您可能想要嘗試的另一件事是JavaScript中新事件(...)的硬編碼地址。 – uchamp 2013-02-19 06:09:10
新事件(URI)的URI應該指向什麼? – 2013-02-19 12:51:40