Я использую среду работы Atmosphere 0.6 Снимок. Tomcat 7 правильно регистрирует, что я использую разъем Http11 Nio, и нет предупреждения о том, что BlockingIO будет использоваться.Невозможно транслировать до одного соединения с использованием среды Atmosphere
Я пытаюсь отправить сообщения на три вида каналов.
- Global Broadcaster - трансляция всех приостановленных ресурсов. (Все)
- Broadcast для конкретного ресурса (скажем, партнер)
- Broadcast для текущего ресурса (Self)
Когда происходит действие Логин, то, что все я должен хранить в сессии для того, чтобы добиться такого рода вещания?
Некоторые детали моего кода следующим образом:
- Мой Handler реализует AtmosphereHandler
В конструкторе я экземпляр globalBroadcaster следующим образом:
globalBroadcaster = new DefaultBroadcaster();
При входе в систему ,
resource.getAtmosphereConfig().getServletContext().setAttribute(name, selfBroadcaster);
где имя - это имя пользователя из параметра запроса, а selfBroadcaster - это новый экземпляр DefaultBroadcaster.Вот код для sendMessageToPartner,
private synchronized void sendMessageToPartner(Broadcaster selfBroadcaster, AtmosphereResource<HttpServletRequest, HttpServletResponse> resource,String name, String message) {
// this gives the partner's name
String partner= (String) resource.getAtmosphereConfig().getServletContext().getAttribute(name + PARTNER_NAME_TOKEN);
// get partner's broadcaster
Broadcaster outsiderBroadcaster = (Broadcaster) resource
.getAtmosphereConfig().getServletContext()
.getAttribute(partner);
if (outsiderBroadcaster == null) {
sendMessage(selfBroadcaster, "Invalid user " + partner);
return;
}
// broadcast to partner
outsiderBroadcaster.broadcast(" **" + message);
Я надеюсь, что я дал всю необходимую информацию. При необходимости я могу предоставить дополнительную информацию.
Проблема в том, что глобальное сообщение отправляется. Когда отправляется сообщение партнеру, иногда он блокируется, сообщение вообще не принимается клиентом. Это происходит последовательно после 3-4 сообщений.
Есть некоторые проблемы с резьбой? Что я делаю не так?
Я надеюсь, что кто-то поможет мне с этим.