spdy.node.js: 我只是得到' 324 (ERR_EMPTY_RESPONSE)



我只是想使用节点包"node-spdy"尝试SPDY。

我的JavaScript:

编辑: 现在脚本包含有关证书的信息。我从twitlog测试应用程序中获取了它们。

var spdy = require('spdy'),
    fs = require('fs');
var options = {
    key: fs.readFileSync(__dirname + '/keys/spdy-key.pem'),
    cert: fs.readFileSync(__dirname + '/keys/spdy-cert.pem'),
    ca: fs.readFileSync(__dirname + '/keys/spdy-csr.pem')
};
var spdy = require('spdy');
var server = spdy.createServer({}, function(req, res) {
    console.log('Send response...');
    res.writeHead(200, {
        "Content-Type": "text/plain"
    });
    res.write("Hello World!n");
    res.end();
    console.log('Response has been sended.');
});
server.listen(3000);

我的问题:回调函数永远不会执行,节点从不记录"发送响应..."或"已发送响应"。我只是得到一个空的响应,但 node.js 没有抛出一个解释:

费勒 324 (净::ERR_EMPTY_RESPONSE(

我的服务器端配置:我在Windows Se7en下使用node.js(版本0.7.6(和node-spdy(提交eafd9c9fdd(。

我的客户端配置:我使用铬构建作为浏览器来测试 spdy out。

在测试期间,我不使用 SSL,所以我不得不更改我的配置。这就是您可以在about:net-internals/#spdy下找到的内容:
==SPDY Status==
SPDY Enabled:               true
Use Alternate Protocol:     false
Force SPDY Always:          true
Force SPDY Over SSL:        false
Next Protocols:

我的客户端调试内容:铬调试服务about:net-internals/#tests告诉我:

Result  Experiment                      Error                   Time (ms)
FAIL    Fetch http://localhost:3000/
        Don't use any proxy             EMPTY_RESPONSE (-324)   3022
        Fetch http://localhost:3000/
        Use system proxy settings       ?                       ?

编辑:由于我添加了证书信息,客户端调试信息发生了一些变化。这是最新的:

Result  Experiment                      Error                   Time (ms)
FAIL    Fetch https://localhost:3000/
        Don't use any proxy             ABORTED (-3)            9
FAIL    Fetch https://localhost:3000/
        Use system proxy settings       ABORTED (-3)            300489
FAIL    Fetch https://localhost:3000/
        Use Firefox's proxy settings    ABORTED (-3)            4
FAIL    Fetch https://localhost:3000/
        Use system proxy settings       ABORTED (-3)            300438

我的服务器端调试内容:这就是内置节点调试器在收到请求时告诉我的内容:

编辑:服务器端调试内容不会改变,即使我将证书信息添加到脚本中也是如此。

debug>n
break in net.js:865
 863
 864 function onconnection(clientHandle) {
 865   var handle = this;
 866   var self = handle.socket;
 867
debug>
break in net.js:866
 864 function onconnection(clientHandle) {
 865   var handle = this;
 866   var self = handle.socket;
 867
 868   debug('onconnection');
debug>
break in net.js:868
 866   var self = handle.socket;
 867
 868   debug('onconnection');
 869
 870   if (!clientHandle) {
debug>
break in net.js:870
 868   debug('onconnection');
 869
 870   if (!clientHandle) {
 871     self.emit('error', errnoException(errno, 'accept'));
 872     return;
debug>
break in net.js:875
 873   }
 874
 875   if (self.maxConnections && self.connections >= self.maxConnections) {
 876     clientHandle.close();
 877     return;
debug>
break in net.js:880
 878   }
 879
 880   var socket = new Socket({
 881     handle: clientHandle,
 882     allowHalfOpen: self.allowHalfOpen
debug>
break in net.js:884
 882     allowHalfOpen: self.allowHalfOpen
 883   });
 884   socket.readable = socket.writable = true;
 885
 886   socket.resume();
debug>
break in net.js:886
 884   socket.readable = socket.writable = true;
 885
 886   socket.resume();
 887
 888   self.connections++;
debug>
break in net.js:888
 886   socket.resume();
 887
 888   self.connections++;
 889   socket.server = self;
 890
debug>
break in net.js:889
 887
 888   self.connections++;
 889   socket.server = self;
 890
 891   ;
debug>
break in net.js:892
 890
 891   ;
 892   self.emit('connection', socket);
 893   socket.emit('connect');
 894 }
debug>
break in net.js:893
 891   ;
 892   self.emit('connection', socket);
 893   socket.emit('connect');
 894 }
 895
debug>
break in net.js:894
 892   self.emit('connection', socket);
 893   socket.emit('connect');
 894 }
 895
 896
debug>

的问题:我只想使用 SPDY 向客户端返回一条简单的短信。如何使用node.js做到这一点?- 如果您需要更多详细信息,请告诉我。感谢您的回答。

ERR_EMPTY_RESPONSE表示Chromium能够连接到套接字,但收到空响应。这很可能指向服务器配置问题,特别是因为从未调用回调。Chris Strom(node-spdy作者(可能很乐意在这里为您提供帮助。

重新打开 SSL。没有它,SPDY 将无法工作。

最新更新