0

ソケットでログを構成しました。socket.io(Java)で(ソケットに設定された)ログオブジェクトを読み込みたい。log-program を実行すると、socket-io はリクエストを受け取りましたが、次の例外をスローします。

java.lang.IllegalArgumentException: empty text at org.jboss.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:103) 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:274) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:261) at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:351) at org.jboss.netty.channel.socket.nio.NioWorker.processSelectedKeys(NioWorker.java:282) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:202) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) java.lang.IllegalArgumentException: invalid version format: TIMESTAMP[

ネットからコードを取得します。ここにコード リンクがあります: https://github.com/ibdknox/socket.io-netty/tree/master/src/main/java/com/ibdknox/socket_io_netty サーバー クラス リンク。 https://gist.github.com/965499

4

1 に答える 1

0

WebSocketServerHandlerでは、HTTP リクエストまたは WebSocketFrame を処理したいようです

public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
    Object msg = e.getMessage();
    if (msg instanceof HttpRequest) {
        handleHttpRequest(ctx, (HttpRequest) msg);
    } else if (msg instanceof WebSocketFrame) {
        handleWebSocketFrame(ctx, (WebSocketFrame) msg);
    }
}

しかし、WebSocketServerPipelineFactoryでは、HttpRequestDecoder を使用しています。

public ChannelPipeline getPipeline() throws Exception {
    // Create a default pipeline implementation.
    ChannelPipeline pipeline = pipeline();
    pipeline.addLast("decoder", new HttpRequestDecoder());

HttpRequestDecoder を使用している場合は、少なくとも有効な HTTP リクエスト行と Content-Length ヘッダーが必要です。

于 2012-07-25T17:52:01.357 に答える