Я создаю приложение Grails, которое использует плагин Atmosphere для передачи данных в браузер. Однако у меня возникают проблемы при создании канала вещания для одного пользователя (пользователя сеанса). Мой код имеет следующее:
Услуги:
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 каждому пользователю. Чего я хочу добиться, так это трансляции только для текущего пользователя.
Есть идеи?
Если вам нужно больше деталей, просто дайте мне знать.
Спасибо