为什么netty http2服务器总是使用奇数来表示streamId

时间:2017-04-21 18:58:38

标签: server netty http2

我正在使用Netty来设置一个简单的http / 2服务器。我使用this示例作为http / 2服务器。

要测试此服务器,我使用的是netty示例client

我将客户端代码发送到服务器的客户端代码:
完整代码:http://netty.io/5.0/xref/io/netty/example/http2/client/package-summary.html

    HttpResponseHandler responseHandler = initializer.responseHandler();
    int streamId = 3;
    HttpScheme scheme = SSL ? HttpScheme.HTTPS : HttpScheme.HTTP;
    AsciiString hostName = new AsciiString(HOST + ':' + PORT);
    System.out.println("Sending request(s)...");
    if (URL != null) {
        System.out.println("with url");

        // Create a simple GET request.
        FullHttpRequest request = new DefaultFullHttpRequest(HTTP_1_1, GET, URL);
        request.headers().add(HttpHeaderNames.HOST, hostName);
        request.headers().add(HttpConversionUtil.ExtensionHeaderNames.SCHEME.text(), scheme.name());
        request.headers().add(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.GZIP);
        request.headers().add(HttpHeaderNames.ACCEPT_ENCODING, HttpHeaderValues.DEFLATE);
        responseHandler.put(streamId, channel.writeAndFlush(request), channel.newPromise());
        streamId += 2;


    }

上面的代码适用于流ID 3,5等等 但是,当我将流ID更改为任何其他数字,如4,6,8等,上面的代码不起作用。从服务器我仍然得到流ID为3,5,7等的消息。我无法在example server

中找到这些流ID的逻辑

1 个答案:

答案 0 :(得分:3)

流编号由HTTP/2 specification强制执行。