Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http spdy.node.js:I';我刚到';324(错误-空-响应)_Http_Node.js_Networking_Spdy_Server Response - Fatal编程技术网

Http spdy.node.js:I';我刚到';324(错误-空-响应)

Http spdy.node.js:I';我刚到';324(错误-空-响应),http,node.js,networking,spdy,server-response,Http,Node.js,Networking,Spdy,Server Response,我只是想使用node包“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 + '

我只是想使用node包“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不会抛出一个exeption:

Fehler 324(网络::错误\u空\u响应)

我的服务器端配置:我在Windows Se7en下使用(版本0.7.6)和(提交
eafd9c9fdd

我的客户端配置:我使用chromium build作为浏览器来测试spdy。在我的测试中,我不使用SSL,所以我不得不改变我的配置。这就是您可以在
关于:net internals/#spdy
下找到的内容:

==SPDY Status==

SPDY Enabled:               true
Use Alternate Protocol:     false
Force SPDY Always:          true
Force SPDY Over SSL:        false
Next Protocols:
我的客户端调试工具:chromium调试服务
关于: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做到这一点如果你需要更多的细节,请告诉我。谢谢您的回答。

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

ERR\u EMPTY\u响应意味着Chromium能够连接到套接字,但收到一个空响应。这很可能是服务器配置问题,特别是因为从未调用回调。Chris Strom(node spdy作者)可能很乐意在这里帮助您。

spdy白皮书告诉我,
结果显示,在普通TCP(无SSL)上,HTTP页面加载时间的加速比为27%-60%,在SSL上为39%-55%。
这意味着普通TCP也是可能的,不是吗?spdy不需要TLS/SSL。请参阅以获得更详细的解释。WebBrowser不允许您在没有SSL的情况下使用SPDY,除非您明确强制他们这样做。允许开发人员关闭SSL只是为了通过Wireshark等工具使调试更容易。另外,@fridojet,您引用的部分将SPDY与“旧”http://https://.But StartCom不会签署本地主机,是吗?所以,只要我只做本地内部测试,我想我必须使用纯TCP,或者我必须自己签名。是的,只需签署您自己的测试证书。没问题,我也是这么想的。我知道克里斯·斯特罗姆的事,但我不想给他写封信,因为我不想通过个人帮助请求打扰他。还是他可以亲自问?或者有其他方法可以很好地联系他吗?我想我刚刚读到了Storm写的一篇文章中的一些有趣的内容:
如果没有SSL,就不可能运行node spdy。
我将尝试了解更多关于这一点的信息,或者你们中的任何人都知道这一事实吗?现在我将SSL与示例应用程序的证书一起使用。但仍然存在同样的问题。