Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   ISA Server / Microsoft Forefront TMG (http://forum.oszone.net/forumdisplay.php?f=98)
-   -   TMG не пропускает WebSocket от Tomcat (http://forum.oszone.net/showthread.php?t=303390)

cyberkatze 04-08-2015 12:07 2536684

TMG не пропускает WebSocket от Tomcat
 
Привет всем!

Мучаемся уже неделю, но так и не пришли к желаемому результату и уже рассматриваем альтернативу перехода на линукс машину.


Что имеем:

1( сервер
  • WinServer 2008 R2 Ent.
  • TMG v7.0.9193.500

2( локальный сервер в сети
  • Tomcat 7.0.63 + websocket_url

задача: пропускать во внешнюю сеть доступ к урлу с ресурсом на вебсокет.

что сделано:
1) подняли томкэт сервер и задеплоили тестовый пример эхо-вебсокета. я его переделал так, что он бродкастит текущее время при подключении к серверу каждую секунду.
локально внутри сети все работает

2) создали правило редиректа с адреса https://ws.mydomain.com на IP-адрес локального сервера по протоколам HTTP/HTTPS.

ЗЫ: у нас стоит правило, что все что приходит по HTTP обворачивается в HTTPS на сервере TMG Forefront.

таким образом заменили в скрипте javascript урл c WS://url на "wss://ws.mydomain.com/echo"

Но к сожалению в логах браузера получаем ошибку 404 на "wss://ws.mydomain.com/echo", как ресурс не найден.


pom.xml
Код:

<dependency>
    <groupId>javax.websocket</groupId>
    <artifactId>javax.websocket-api</artifactId>
    <version>1.0</version>
    <scope>provided</scope>
</dependency>



Java-Websocket реализация
Код:

@ServerEndpoint("/echo")
public class WebSocketEndPoint{
    @OnOpen public void onOpen(final Session session) {
        System.out.println(session.getId() + " has opened a connection");
        try {
            session.getBasicRemote().sendText("msg from server: Connection Established");
            new Thread(new Runnable() {
                @Override public void run() {
                    java.util.Date date;
                    while (true) {
                        date = new java.util.Date();
                        try {
                            session.getBasicRemote().sendText("msg from server:" + new Timestamp(date.getTime()));
                        } catch (IOException e1) {e1.printStackTrace();}
                        Thread.sleep(1000);
                    }
                }
            }).start();
        } catch (IOException ex) {ex.printStackTrace();}
    }

    @OnMessage public void onMessage(String message, Session session) {
        System.out.println("Message from " + session.getId() + ": " + message);
        for (Session clientSession : session.getOpenSessions()) {
            try {
                clientSession.getBasicRemote().sendText(message);
            } catch (IOException e) { e.printStackTrace();}
        }
    }

    @OnClose public void onClose(Session session) {System.out.println("Session " + session.getId() + " has ended");}

    @OnError public void onError(Throwable error) {System.out.println("ERROR: " + error.getMessage());}
}




Не могли бы Вы подсказать, как можно исправить настройки сервера, чтобы он разрешил доступ извне для нашего локального вебсокет-сервера?

Спасибо!

cyberkatze 18-08-2015 11:50 2542975

up!

IT Shepherd 18-08-2015 15:53 2543114

Возможно это будет в помощь.


Время: 01:18.

Время: 01:18.
© OSzone.net 2001-