热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

node.js服务器和带有express.js的HTTP/2(2.0)

如何解决《node.js服务器和带有express.js的HTTP/2(2.0)》经验,为你挑选了2个好方法。

目前是否有可能获得node.js HTTP/2(HTTP 2.0)服务器?和http 2.0版的express.js?



1> 小智..:
var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('hello, http2!');
});

var optiOns= {
  key: fs.readFileSync('./example/localhost.key'),
  cert: fs.readFileSync('./example/localhost.crt')
};

require('http2').createServer(options, app).listen(8080);

编辑

此代码段取自Github上的对话.


FYI这不适用于`express @ 4.13.3`和`http2 @ 3.2.0`,看起来快递不会支持它直到v5.https://github.com/molnarg/node-http2/issues/100

2> Gajus..:

如果您正在使用express@^5http2@^3.3.4,那么启动服务器的正确方法是:

const http2 = require('http2');
const express = require('express');

const app = express();

// app.use('/', ..);

http2
    .raw
    .createServer(app)
    .listen(8000, (err) => {
        if (err) {
            throw new Error(err);
        }

        /* eslint-disable no-console */
        console.log('Listening on port: ' + argv.port + '.');
        /* eslint-enable no-console */
    });

请注意https2.raw.如果要接受TCP连接,则必须执行此操作.

请注意,在撰写本文时(2016 05 06),主流浏览器都没有支持HTTP上的HTTP2.

如果要接受TCP和TLS连接,则需要使用默认createServer方法启动服务器:

const http2 = require('http2');
const express = require('express');
const fs = require('fs');


const app = express();

// app.use('/', ..);

http2
    .createServer({
        key: fs.readFileSync('./localhost.key'),
        cert: fs.readFileSync('./localhost.crt')
    }, app)
    .listen(8000, (err) => {
        if (err) {
            throw new Error(err);
        }

        /* eslint-disable no-console */
        console.log('Listening on port: ' + argv.port + '.');
        /* eslint-enable no-console */
    });

请注意,在撰写本文时,我确实设法制作expresshttp2工作(请参阅https://github.com/molnarg/node-http2/issues/100#issuecomment-217417055).但是,我设法让http2(和SPDY)使用spdy包工作.

const spdy = require('spdy');
const express = require('express');
const path = require('path');
const fs = require('fs'); 

const app = express();

app.get('/', (req, res) => {
    res.json({foo: 'test'});
});

spdy
    .createServer({
        key: fs.readFileSync(path.resolve(__dirname, './localhost.key')),
        cert: fs.readFileSync(path.resolve(__dirname, './localhost.crt'))
    }, app)
    .listen(8000, (err) => {
        if (err) {
            throw new Error(err);
        }

        /* eslint-disable no-console */
        console.log('Listening on port: ' + argv.port + '.');
        /* eslint-enable no-console */
    });


推荐阅读
author-avatar
小樣兒靠邊詀_853
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有