Tag: http2

http / 2推送JavaScript不加载

当请求进来时,我使用spdy nodejs库来压下我的javascript包。 spdy .createServer(options, (req, res) => { // TODO – figure out why the javascript doesnt load on the client if (res.push) { console.log("Pushing…"); // push vendor bundle const bundleStream = res.push(`/js/client.js`, { status: 200, method: "GET", request: { accept: "*/*" }, response: { "content-type": "application/javascript" }, }); bundleStream.on("error", (e: any) => console.error(e)); bundleStream.end(); […]

Express Js将原始http2头信息写入res对象套接字

我需要得到一个原始的套接字后,在我的网站上的具体url的请求,我有这样的逻辑,即时运行使用spdy的http2服务器: bin.js: var app = require('../app'); var debug = require('debug')('http2-nodejs-test:server'); const spdy = require('spdy'); const path = require('path'); const fs = require('fs'); var port = normalizePort(process.env.PORT || '443'); app.set('port', port); const options = { key: fs.readFileSync('privkey.pem'), cert: fs.readFileSync('fullchain.pem'), ca : fs.readFileSync('chain.pem'), spdy: { protocols: [ 'h2'], plain: false } } spdy.createServer(options, app).listen(port); 在我的app.js中有路由逻辑: var express […]

HTTP2推送脚本标签在res.end

使用Speedy NPM模块阅读HTTP2文章后,我有一个问题。 HTTP2推送的好处是浏览器在浏览器请求之前caching资源。 在这个例子中: spdy.createServer(options, function(req, res) { // push JavaScript asset (/main.js) to the client res.push('/main.js', {'content-type': 'application/javascript'}, function(err, stream) { stream.end('alert("hello from push stream!")'); }); // write main response body and terminate stream res.end('Hello World! <script src="/main.js"></script>'); }).listen(443); 什么<script src="/main.js"></script>实际上导致浏览器在res.end('Hello World! <script src="/main.js"></script>') ? 如果index.html里面有<script src="/main.js"></script> ,为什么把它放在res.end('Hello World! <script src="/main.js"></script>') ?

HTTP2 / SPDY推送validation:如何testing?

我正在使用节点模块spdy 实施HTTP2 / SPDY推送资源。 我遵循indutny的文档 ,并已经做了testing运行实现他的例子到我的server.js。 问题是双重的; 我没有得到任何日志中的错误,也没有看到在浏览器中的alert 。 在开发者控制台中我也没有看到任何改变。 如果我设置一个伪造的推送url,我不会收到任何回应/错误等。 我相信在理论上,优先级应该从中medium High (?)。 请参阅屏幕截图。 有没有另外一种方法来testing浏览器是否被推送? 或者,我的脚本中是否有错误( 请检查不一致 )? 另外,抛出什么stream.on('error', function() {}); ? 在Chrome(在ChromeBook上)中进行testing,在Chrome中validation了nodejs v5.1.0,npm v3.3.12 – 启用了H2。 server.js: var environment = '../env/' + process.env.NODE_ENV // Process User config , fS = require('fs') , jsonFile = fS.readFileSync(environment + '/config.json') , jsonString, hostIp, hostPort, cacheExp, cps; […]

我可以使用http2将响应stream式传输回浏览器吗?

是否有可能从浏览器,也许使用http2stream回应答? 在我的networking应用程序中,用户按下了一个启动服务器进程的button。 此过程可能需要10分钟或更长时间才能完成。 我想将状态更新传回给客户端/浏览器。 我相信我可以用websockets做到这一点,但是我希望http2有一些东西可以使这个更容易。 我知道它支持“推”,但据我所知,这只是推送用户将来可能需要的文件。 或者,也许我甚至不需要http2? 浏览器保持连接多长时间? 我可以无限期地保持res.write()吗?

expressjs v5发布date?

6月份有一个小小的expression,但是自从1月份以后(在被StrongLoop和IBM收购之前)没有任何performance。 自从StrongLoop收购以来,它似乎一直在收集灰尘……有没有人有什么想法,他们可能会开始采取行动? 即使围绕这个问题的讨论似乎也是死的。 终于见到http2支持会很好,我不敢相信像express这样的stream行架构还没有它,现在已经落后了一段时间。

是否有一个“请求”像使用http2的包?

我们在工作中使用请求 。 我们现在可以访问我们的服务器到服务器请求的http2 。 你知道任何节点包与使用http2的请求相同的api(ish)吗?

HTTP2 – 如何具有类似WebSocket的function(Keep-Alive,EventSource等)

想知道如何在Node.js中设置客户端和服务器之间的持久连接。 持久连接应该能够从双方来回发送请求。 似乎需要有一个机制来描述每个请求,比如\r\n如果请求是JSON,但是不知道如果之前已经完成了什么最佳实践, 想知道如何networking套接字处理这一点。 Mozilla说Keep-Alive不应该用在生产中,所以想知道HTTP2是否仍然适用。 使用EventSource可以接收服务器事件,但是想知道是否有办法添加客户端事件发送到服务器。 最后,我希望有一个像WebSockets一样的双向通信的简单设置,但是我不确定HTTP2的最佳实践,以及是否应该使用WebSockets完成。 我宁愿尝试没有websockets这样做。 https://daniel.haxx.se/blog/2016/06/15/no-websockets-over-http2/

获取socket.io,express和node-http2通过HTTP / 2进行通信

我使用socket.io,node-http2编写了一个Web Socket服务器,并在Node.js中表示。 除了根据Chrome的DevTools socket.io的协商请求通过HTTP / 1.1(如下所示)之外,服务器按预期工作。 如果请求是使用HTTP / 2发送的,则“协议”列应显示h2 。 这只在Chrome中发生,其他浏览器使用正确的协议。 服务器代码(缩写): var PORT = 8667, config = require('./config'), socketioServer = require('socket.io'), app = express(), https = require('http2'), cors = require('cors'); app.use(cors(function(req, callback){ var corsOptions = { origin: false }; if (/^https:\/\/mlpvc-rr\.lc/.test(req.header('Origin'))) corsOptions.origin = true; callback(null, corsOptions); })); app.get('/', function (req, res) { res.sendStatus(403); }); […]

TypeError:dest.end不是一个函数

我正在尝试使用HTTP / 2。 我的快递版本是5.0.0-alpha.2, http2版本是3.3.4。 我想http2应该和express 5一起工作 。 const http2 = require('http2'); // const http2 = require('spdy'); // using spdy package here, everything works perfect const options = { key: fs.readFileSync(path.join(__dirname, 'private', 'server.key')), cert: fs.readFileSync(path.join(__dirname, 'private', 'server.crt')) }; const server = http2 .createServer(options, app) .listen(3000, err => { if (err) throw new Error(err); // I […]