以下举例说明了一个使用核心 API 的简单的 HTTP/2 服务器。 由于没有已知的浏览器支持[未加密的 HTTP/2][HTTP/2 Unencrypted],因此在与浏览器客户端进行通信时必须使用 [http2.createSecureServer()]。

    1. const http2 = require('http2');
    2. const fs = require('fs');
    3. const server = http2.createSecureServer({
    4. key: fs.readFileSync('密钥.pem'),
    5. cert: fs.readFileSync('证书.pem')
    6. });
    7. server.on('error', (err) => console.error(err));
    8. server.on('stream', (stream, headers) => {
    9. // 流是一个双工流。
    10. stream.respond({
    11. 'content-type': 'text/html; charset=utf-8',
    12. ':status': 200
    13. });
    14. stream.end('<h1>你好世界</h1>');
    15. });
    16. server.listen(8443);

    要生成此示例的证书和密钥,可以运行:

    1. openssl req -x509 -newkey rsa:2048 -nodes -sha256 -subj '/CN=localhost' \
    2. -keyout 密钥.pem -out 证书.pem