0

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
  }
}

インデックス.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 を更新しました。上記のコードが機能するようになりました

4

2 に答える 2

0

PushEvents.groovyディレクトリ内のファイルに「savedTodo」マッピングを追加したようですPluginこれは間違っています!

独自のプロジェクト*Events.groovyのフォルダー内に独自のファイルを追加し、プラグインのファイルはそのままにしておく必要があります。confPushEvents.groovy

他のコードは今のところ問題ないようです ;)

の JavaScript セクションにタイプミスがありますindex.gsp:

それは読みます:

grailsEvents.send('saveTodo', data);

それがいつあるべきか:

grailsEvents.send('savedTodo', data);

「d」を省略しました... ;)

于 2013-02-19T07:39:30.523 に答える
0

そこで、データがクライアントにプッシュされない原因を突き止めました。

MyService.groovyからの行を編集しました

event('savedTodo', data)

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

現在、期待どおりに機能しています

于 2013-02-20T12:27:28.320 に答える