Draft10 с WSS - PullRequest
       9

Draft10 с WSS

0 голосов
/ 06 ноября 2011

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

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

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

Порт: 80: Apache non 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());

Anyидеи?

Ура,

Тамир

Ответы [ 2 ]

0 голосов
/ 22 мая 2012

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

При некоторых обстоятельствах синтаксический анализ параметра 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].

0 голосов
/ 13 ноября 2011

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

См. Запрос на извлечение: https://github.com/netty/netty/pull/53.

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

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

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

...