Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
 
ivan2009
0 / 0 / 0
Регистрация: 18.10.2014
Сообщений: 1
#1

Обновление клиента сервером

22.10.2014, 09:48. Просмотров 412. Ответов 0
Метки нет (Все метки)

Всем привет.

Задача. Есть два клиента и сервер. Клиент1 вызывает метод фасада сервера, сервер волшебным образом обновляет Клиента2.

Как сделал.
-------------------------------------------
На сервере создал класс для работы с Websocket
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@Singleton
@ServerEndpoint(value="/endpoint")
public class A {
 
    //Коллекция подключенных клиентов
    private static Set<Session> p = Collections.synchronizedSet(new HashSet<Session>());
 
   //Метод вызывается когда клиент открывает соединение
   @OnOpen
   public void onOpen (Session peer) {
 
        //Заносим клиента в коллекцию
        p.add(peer);
   }
 
   //Рассылка сообщений
   public void send() {
 
        //Летим по коллекции и делаем send
        for (Session client : p) {
            client.getBasicRemote().sendObject("message");
        }
  }
В странице клиента подключаем файл с javascript
Javascript
1
<script type="text/javascript" src="mysocket.js"></script>
В этом файле
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var wsUri = "ws://" ............;
 
  //После вызова этого метода на сервере в классе A вызывается метод onOpen
  var websocket = new WebSocket(wsUri); 
 
  websocket.onmessage = function(evt) { onMessage(evt) };
 
  websocket.onopen = function(evt) { onOpen(evt) };
 
  Метод обрабатывает полученное сообщение
  function onMessage(evt) {
    alert("--RECEIVED---");
    
  }
 
  function onOpen() {
      writeToScreen("Connected to " + wsUri);
  }
Теперь в фасаде сервера
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public abstract class AbstractFacade<T> {
       private Class<T> entityClass;
 
    @Inject
     private А _a;
 
   //...... и в методе, который вызывает Клиент1 дописываем:
   public void create(T entity) {
 
       _a.send();
 
     getEntityManager().persist(entity);
   }
Компилим, запускаем.

Клиенты заносятся в коллекцию сервера - отследил по логам. При вызове фасада сервера Клиентом1 вызывается _a.send(). Адреса клиентов в коллекции кошерные, как при регистрации.
НО ПОЧЕМУ-ТО НЕ ВЫЗЫВАЕТСЯ МЕТОД В JavaScript на стороне клиента function onMessage(evt) {...

Вот собственно и все. Голову уже сломал.
Может нельзя в методе фасада сервера посылать сообщения клиентам?
Или у меня ошибка в javascripte? Как сделать-то?
Подскажите плиз....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.10.2014, 09:48
Ответы с готовыми решениями:

Игра с сервером в “21
Игра с сервером в “21

Соединиться сервером БД из апплета
Подскажите кто-нибудь насчёт соединения с сервером БД из апплета. Не могу не...

Друзья! клиент-сервером на сокетах
в общем задание нетрудное, необходимо реализовать клиент-сервер. на сервере...

Программа удаленного наблюдения за сервером. Вопросы.
Штука следующая. Делаю програмку удаленного наблюдения за сервером, т.е. в...

Заголовок сообщения: Отправка SOAP request сервером
Добрый день! Не могу разобраться с вопросом. Есть веб-сервис работающий по...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2014, 09:48

Клиент, который общается с сервером с помощью XML-потока
Сейчас пишу клиент, который общаеться с сервером с помощью XML-потока. Т.е....

Нужно обработать некоторые заголовки высылаемые сервером клиенту
написал я 4 объекта-Home interface,Remote interface,Bean Class,PrimaryKey...

Обмен данными с сервером.Как обойти загрузку страниц?
Зарегистрился на нет.ру . Предполагалось что браузер будет вести обмен данными...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru