Draft10 с WSS

Я пытаюсь запустить последний пример Netty Draft10 поверх SSL (WSS)

https://github.com/netty/netty/tree/master/src/main/java/org/jboss/netty/example/http/websocketx/server

Я использую следующую конфигурацию порта:

Порт: 80: Apache без ssl
Порт: 443: Apache ssl
Порт: 8080: Tomcat
Порт: 8877: Netty Web без SS
Порт: 9977: Netty SSL

Но когда я вставляю код обработчика SSL

public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {

    //TODO - Tamir - Add support for Wss
    // Get the SslHandler in the current pipeline.
    // We added it in SecureChatPipelineFactory.
    final SslHandler sslHandler = ctx.getPipeline().get(SslHandler.class);

    // Get notified when SSL handshake is done.
    ChannelFuture handshakeFuture = sslHandler.handshake();
    handshakeFuture.addListener(new Greeter(sslHandler));
}

в класс WebSocketServerHandler я получаю сообщение об ошибке

java.lang.IllegalArgumentException: empty text 
        at org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:95) 
        at org.jboss.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:68) 
        at org.jboss.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:81) 
        at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:198) 
        at org.jboss.netty.handler.codec.http.HttpMessageDecoder.decode(HttpMessageDecoder.java:107) 
        at org.jboss.netty.handler.codec.replay.ReplayingDecoder.callDecode(ReplayingDecoder.java:470) 
        at org.jboss.netty.handler.codec.replay.ReplayingDecoder.messageReceived(ReplayingDecoder.java:443) 
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:275) 
        at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:262) 
        at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:340) 
        at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:271) 
        at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:191) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
        at java.lang.Thread.run(Thread.java:662) 
java.lang.IllegalArgumentException: invalid version format: ?_?_?__

Это мой конвейерный код

SSLEngine engine =
        SecureChatSslContextFactory.getServerContext().createSSLEngine();
    engine.setUseClientMode(false);

    pipeline.addLast("ssl", new SslHandler(engine));

    // On top of the SSL handler, add the text line codec.
    pipeline.addLast("decoder", new StringDecoder());
    pipeline.addLast("encoder", new StringEncoder());

    // and then business logic.
    pipeline.addLast("handler", new WebSocketServerHandler());

Есть идеи?

Ваше здоровье,

Тамир


person Tamir Klein    schedule 06.11.2011    source источник


Ответы (2)


Я только что загрузил рабочий пример веб-сокетов с SSL, который я объединил с мастером.

См. запрос на вытягивание: https://github.com/netty/netty/pull/53. .

Новый код находится в src/main/java/org/jboss/netty/example/http/websocketx/sslserver.

Пожалуйста, прочтите package-info.java для получения инструкций по установке.

Дайте мне знать, если это работает для вас.

person Veebs    schedule 13.11.2011
comment
Спасибо. Не могли бы вы пометить это как ответ, чтобы наш фильтр не показывал эту проблему. Спасибо. - person Veebs; 14.11.2011

Поскольку я сам столкнулся с этой проблемой, я подумал, что стоит упомянуть:

В некоторых случаях синтаксический анализ параметра initialLine HttpRequestDecoder неверен. это может произойти, если вы не добавите путь к URI, т. е. попробуете ws://localhost:8080 без добавления /websocket к URL-адресу.

return new DefaultHttpRequest(HttpVersion.valueOf(initialLine[2]),
                HttpMethod.valueOf(initialLine[0]), initialLine[1]);

Поле версии HTTP должно быть в initialLine[2], но вместо этого оно появляется в initialLine[1].

person ApriOri    schedule 22.05.2012