Nodejs - SPDY推送请求错误

时间:2014-02-17 09:32:33

标签: node.js spdy

我无法启动我的Node应用程序。我得到“TypeError:无法调用方法'推送'未定义”错误。 这是我的代码:

spdy.createServer(credentials, app).listen(app.get('port'), function(req, res) {
 res.push('public/js/bootstrap.min.js', {'content-type': 'application/javascript'}, function(err, stream) {
        stream.end('alert("hello from push stream!")');
      });
 res.push('public/js/jquery.min.js', {'content-type': 'application/javascript'}, function(err, stream) {
        stream.end();
      });
 res.push('public/css/bootstrap.min.css', {'content-type': 'text/css'}, function(err, stream) {
        stream.end();
      });

      // write main response body and terminate stream
      res.end('Hello World!');

console.log('Express HTTPS SPDY server listening on port ' + app.get('port'));
}   );

我正在运行SDPY版本1.19.2和NodeJS版本0.10.25。

2 个答案:

答案 0 :(得分:1)

根据您的comment,您使用的是HTTP / 1.1。你需要使用HTTP2 / SPDY来推动工作。

答案 1 :(得分:0)

试试这个:

// set the root path of Express server
app.use(express.static(__dirname+'/public');

app.use(function(req, res) {
  // your res.push code is here.
  var stream = res.push('/js/bootstrap.min.js', {'content-type': 'application/javascript'});
  stream.on('acknowledge', function() {
    console.log('stream ACK');
  });
  stream.on('error', function() {
    console.log('stream ERR');
  });
  stream.end('alert("stream SUCCESSFUL");');
  res.end('<script src="/js/bootstrap.min.js"></script>');
});

spdy.createServer(credentials, app).listen(app.get('port'));

传递给listen()函数的回调函数不带参数。见第49行,档案stream-test.js