我正在尝试使用grails-2.3.5和grails事件推送插件:
https://github.com/smaldini/grails-events-push
在服务器和客户端之间来回发送事件。到目前为止,我已经设法将事件从服务器发送到客户端,从服务器发送到服务器。但我似乎无法让客户端成功向服务器发送事件。
在我的BuildConf.groovy中,我添加了:
mavenRepo "https://oss.sonatype.org/content/repositories/snapshots/"
和
compile ":events-push:1.0.M7"
我已将tomcat插件的版本从7.0.50更改为7.0.42,如下所述:
https://github.com/smaldini/grails-events-push/issues/55
我的接收服务的事件如下:
package sandbox
import grails.transaction.Transactional
@Transactional
class MyService {
@grails.events.Listener
def bagsUpdated(Map data) {
System.out.println("Event fired")
}
}
在我的.gsp文件中我加载了javascript:
<r:require module="grailsEvents"/>
并尝试使用以下方法触发事件:
<button onclick="grailsEvents.send('bagsUpdated', null);">Click Me</button>
无论如何,每次点击按钮都会在grails控制台上收到以下消息:
| Error 2014-02-11 07:18:16,982 [http-bio-8080-exec-3] ERROR http11.Http11Protocol - Error reading request, ignored
Message: null
Line | Method
->> 339 | invokeWebSocketProtocol in org.atmosphere.websocket.DefaultWebSocketProcessor
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 83 | onTextData in org.atmosphere.container.TomcatWebSocketHandler
| 1145 | runWorker . . . . . . . in java.util.concurrent.ThreadPoolExecutor
| 615 | run in java.util.concurrent.ThreadPoolExecutor$Worker
^ 744 | run . . . . . . . . . . in java.lang.Thread
我的javascript控制台错误如下:
08:00:13.618 The connection to ws://localhost:8080/sandbox/g-eventsbus/eventsbus?X-Atmosphere-tracking-id=0&X-Atmosphere-Framework=1.1.0.beta3&X-Atmosphere-Transport=websocket&X-Atmosphere-TrackMessageSize=true&X-Cache-Date=0&topics=eventsbus%2CbagsUpdated was interrupted while the page was loading. jquery.atmosphere.js:839
08:00:13.618 "Websocket closed, reason: Connection was closed abnormally (that is, with no close frame being sent)." jquery.atmosphere.js:2436
08:00:13.618 "Websocket closed, wasClean: false" jquery.atmosphere.js:2436