为什么我无法从nodeJS的httpServer收到前几个响应?
|
我打算将nodeJS用作我的彗星服务器,并且编写了一些测试代码,但是存在一个问题,即客户端第一次连接到服务器时,它无法从服务器获得响应。
这是服务器端代码(server.js):
var util = require(\'util\');
var redis = require(\'redis\').createClient(6379, \'192.168.1.254\');
var http = require(\'http\');
redis.on(\"error\", function (err) {
console.log(\"Error \" + err);
});
var server = http.createServer(requestListener);
server.listen(9898, \'192.168.1.254\');
function requestListener(req, res) {
util.log(\'Connected.\');
redis.brpoplpush(\'msg:q:1\', \'msg:s:1\', 20, function(err, reply) {
if (err) {
util.log(\'ERROR: \' + err);
}
var length = reply ? reply.length : 0;
res.writeHead(200, {
\'Content-Type\':\'text/plain\',
\'Content-Length\':length
});
if (length) {
res.end(reply);
util.log(\'Sent: \' + reply);
} else {
res.end(\'\');
}
});
}
和客户端代码(client.sh):
#!/bin/bash
while [ 1 ]
do
curl -i http://192.168.1.254:9898
done
我按照以下步骤进行了测试:
节点server.js
./client.sh
在redis中,LPUSH(\'msg:q:1 \',\'blablah \')
现在,控制台上印有“ Sent:blablah”,被res.end(reply)
,但是客户什么也没收到。我重复步骤3多次,然后按预期方式工作。如果我重新启动客户端,将无法再收到前几个响应。
我该如何解决?
没有找到相关结果
已邀请:
1 个回复
系漏