我正在创建一个使用 Atmosphere 插件将数据推送到浏览器的 Grails 应用程序。但是,我在为单个用户(会话的用户)创建广播频道时遇到了麻烦。我的代码如下:
服务:
static atmosphere = [mapping: '/atmosphere/recommend']
def onRequest = { event ->
def request = event.request
def response = event.response
event.suspend()
def broadcaster = event.broadcaster
request.session.broadcaster = broadcaster
broadcaster.broadcasterConfig.addFilter(new XSSHtmlFilter())
}
def onStateChange = { event ->
if (!event.message) return
event.resource.response.writer.with {
write "<script>parent.callback('${event.message}');</script>"
flush()
}
}
控制器:
def builder = new JSONBuilder()
def jsonResult = builder.build{
artist = artistInstance
location = {
lat = eventInstance.location.lat
lng = eventInstance.location.lng
}
}
session.broadcaster.broadcast(jsonResult)
此解决方案将 jsonResult 广播给每个用户。我想要实现的是只为当前用户广播。有任何想法吗?如果您需要更多详细信息,请告诉我。
谢谢