Java Websocket не открывается должным образом WAS 9.0 - PullRequest
0 голосов
/ 19 марта 2019

Я создал довольно простой Java-сокет и пытаюсь проверить его в нашей тестовой среде. На моем локальном компьютере веб-сокет открывается без проблем, остается с кодом готовности «1», и все, кажется, работает хорошо.

Однако на моем тестовом компьютере, несмотря на то, что сокет, кажется, открывается, я все еще проверяю состояние готовности и выдает код «1», обновление с Https до websocket происходит на вкладке сети, функция OnOpen в моем коде Java похоже, не срабатывает (я пытаюсь зарегистрировать идентификатор пользователя, который идет с новым соединением при открытом сокете и который не отображается ни в журналах моей тестовой среды. На моей локальной машине это тоже работает)

private static final ArrayList<Session> connectedSessions = new ArrayList<>();

@OnClose
public void closeSession(Session session) {
    try {
        connectedSessions.remove(session);
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
    }
}

@OnMessage
public void onMessage(String message, final Session session) {
    broadcastMessage(message, session);
}

@OnOpen
public void openSession(@PathParam("userId") String userId, Session session) {
    try {
        session.getUserProperties().put("USER_ID", userId);
        connectedSessions.add(session);
        LOGGER.info("-------- Connection id ---------" + userId);
    } catch (Exception e) {
        LOGGER.error(e.getMessage(), e);
    }
}

Во внешнем интерфейсе я использую угловой, но никакой другой фреймворк для веб-сокетов, просто обычный javascript, а для моего бэкэнда я использую Xframe 2.2 с сервером приложений Websphere 9.0. Я уверен, что вызываю нужную конечную точку, поскольку она работает на моем локальном компьютере, и я несколько раз тестировал ее с несколькими сеансами.

РЕДАКТИРОВАТЬ: добавление углового кода ниже

this.ws= new WebSocket("wss://" + env.websocketUrl + "socket" + this.context.settings.userId);
this.ws.onmessage = (event) => {
      this.update(event.data, this.context.settings.userId);
    };

 doSomething(data) {
        this.ws.send(data);
}

Следует отметить, что сообщение отправляется. Я проверил кадры WS, но я не получил ответа. Это остается "в ожидании"

1 Ответ

0 голосов
/ 21 марта 2019

Может быть закрыт. Оказывается, моя компания блокирует любые вызовы http2, которые выполняются на наших серверах test / prod. Вот почему веб-сокеты работали на моей локальной машине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...