我有这个非常简单的代码,似乎有一些问题。问题仅出在 Chrome 和 Firefox 上(我尝试了 Opera 和命令行 curl 请求,效果很好)。
如果我从浏览器中点击 URL http://localhost:3000/
,它会显示当前时间戳。当我按一次刷新时,它按预期工作。但在那之后,它只适用于备用请求。一次刷新给出结果,另一次进入永远等待和最终超时。我只在 Chrome 和 Firefox 中遇到过这个问题。谁能指出为什么会发生这种情况?
如果我删除子进程的东西,它工作正常,即服务来自主进程本身的请求,它工作得很好。我想知道,如果我为同一个套接字创建另一个响应对象并通过该套接字发送数据会有什么不同。最重要的是,Chrome 和 FF 对这段代码有什么问题,为什么?
服务器代码,
var http = require('http');
var child_process = require('child_process');
var worker = child_process.fork('./worker.js');
http.createServer(function (req, res) {
if (req.url == '/favicon.ico') {
res.end();
return;
}
worker.send({ 'event': 'start' }, res.socket);
}).listen(3000);
而且,工人代码是,
var http = require('http');
process.on('message', function (data, socket) {
var response = new http.ServerResponse({});
response.assignSocket(socket);
response.end(new Date().getTime() + '');
});