Атмосфера - изолировать несколько подписок на одной странице
У меня есть одностраничное приложение, которое может иметь 1..n-атмосферу подписки на тему (подписка обычно привязана к компоненту, который пользователь добавляет на экран). Проблема, с которой я сталкиваюсь, заключается в том, что, когда я звоню отписаться по одному запросу, он отменяет подписку на ВСЕ запросы. Вы можете увидеть пример внешнего интерфейса на http://pastebin.com/c113bCNY. Я могу успешно установить оба соединения и оба получать обновления сообщений независимо, но когда я вызываю $.atmosphere.unsubscribe(requestOne); Событие onClose запускается для обоих, и я могу подтвердить на сервере, что он также закрывает обе подписки.
На стороне сервера я использую MeteorServlet в среде Spring MVC. (См. http://pastebin.com/2Ub83LdZ для соответствующих частей) Есть ли что-то еще, что мне нужно сделать, чтобы изолировать две подписки?
Версии:
jQuery.atmosphere = { version: "2.2.13-jquery"}
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-runtime</artifactId>
<version>2.3.5</version>
</dependency>
Заранее спасибо.
1 ответ
$.atmosphere.unsubscribe(request) отменяет все сокетное соединение (игнорирует параметр request). Видимо, это по замыслу. Чтобы отменить одну подписку, вызовите метод disconnect() для объекта подписки, который вы получаете от $.atmosphere.subscribe.