Grails事件推送插件没有从服务器事件获得响应 [英] Grails Events Push plugin not getting a response from server event

查看:99
本文介绍了Grails事件推送插件没有从服务器事件获得响应的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直试图让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'主题
}
}
上触发已注册的浏览器

$ 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆