2016-04-12 3 views
0

Я пишу веб-приложение с Java Play, и идея состоит в том, чтобы веб-соединение подключалось к серверу, отправляло кучу «живых» -данных в JSON и подключалось к другому веб-узлу сервер и собирать данные. Я пытаюсь реализовать шаблон наблюдателя здесь, поэтому сервер будет отправлять данные всякий раз, когда он обновляется. Кажется, я не могу заставить его работать.Шаблон наблюдателя в платформе Java Play

Так что я догадываюсь, что спрашиваю , как реализовать шаблон наблюдателя в приложении Java Play.

Я попытался поместить этот код в метод onStart, но я продолжаю получать InstantationException, которое, как я предполагаю, связано с тем, что объекты создаются при подключении WebSocket.

WSocket socket = new WSocket(); //Observable 
Listener listener = new Listener(socket); //Observer 

Любые советы будут оценены!

+0

я мог бы упомянуть, что обе розетки работают, то есть один сокет может отправить JSON -данные, а другие могут собирать JSON-данные. (Протестировано отдельно.) –

+0

Как вы работаете с соединениями Websocket? С такими актерами, как https://playframework.com/documentation/2.5.x/JavaWebSockets? Какую версию игры вы используете? – Anton

+0

Я использую Play 2.5.1, и теперь я обрабатываю свои сокеты с помощью обратных вызовов :) –

ответ

0

Исправьте меня, если я ошибаюсь, но я думаю, что вы слишком сложны. Если я правильно понимаю, вы хотите, чтобы данные, которые были отправлены из одного соединения WebSocket, были занесены в другие активные соединения WebSocket.


Если вы используете обратные вызовы в игре, когда WebSocket готов, вы получите как in и out каналы.

Что вы можете сделать, это собрать все out каналы в какой-то List и всякий раз, когда вы получите некоторое сообщение, которое вы просто вещания это сообщение всем out каналов, которые вы собрали.

И если у вас есть время рассмотреть переписывание обработку WebSocket соединений с актерами Akka - это проще и стабильнее (а также весело;)

+0

Вы совершенно правы. Этот проект очень близок к тому, чтобы стать спагетти. Я попытался выставить каналы в списке, теперь он работает :) –

+0

Рад, что я мог бы помочь :) – Anton

Смежные вопросы