Grails事件推送插件无法获得服务器事件的响应

时间:2013-02-18 18:34:18

标签: grails push

我一直在努力让grails事件推送插件工作,但是当调用savedToDo事件时,似乎无法从服务器获取响应数据。我可以在我的控制台中看到来自服务器和执行服务代码的数据的日志,但是客户端似乎没有回复响应。我的代码如下:

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,上面的代码现在正在运行

2 个答案:

答案 0 :(得分:0)

您似乎已将'savedTodo'映射添加到PushEvents.groovy目录中的Plugin文件中。 这是错误的!

您应该在自己项目的*Events.groovy文件夹中添加自己的conf文件,并保持插件的PushEvents.groovy文件不变!

到目前为止其他代码看起来很好;)

index.gsp中的JavaScript部分中有一个拼写错误:

它的内容如下:

grailsEvents.send('saveTodo', data);

应该是:

grailsEvents.send('savedTodo', data);

你省略了“d”......;)

答案 1 :(得分:0)

所以我发现了导致数据没有被推送到客户端的原因。

我在MyService.groovy编辑了

中的行

event('savedTodo', data)

event(topic:'savedTodo', data:data)

现在按预期工作