今天晚上V2EX好像挂了一会,我的公众号给挂了

2013-03-26 23:52:03 +08:00
 zhfsxtx
看LOG是解析返回的JSON有问题。
var topics = JSON.parse(buf.toString());
SyntaxError: Unexpected end of input
at Object.parse (native)
at IncomingMessage.<anonymous> (/root/node/3w/weixin/v2ex/routes/handler.js:24:23)
at IncomingMessage.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:382:10)
at emitReadable (_stream_readable.js:377:5)
at onEofChunk (_stream_readable.js:357:5)
at readableAddChunk (_stream_readable.js:129:5)
at IncomingMessage.Readable.push (_stream_readable.js:112:10)
at Socket.socketCloseListener (http.js:1462:9)
at Socket.EventEmitter.emit (events.js:117:20)
at TCP.close (net.js:436:12)

因为一个JSON错导致整个APP挂不应该啊,在NODEJS 里面是怎么做容错的啊。
2514 次点击
所在节点    问与答
4 条回复
Livid
2013-03-26 23:53:25 +08:00
今天我们因为受到攻击,确实不太稳定。

你的程序中,应该检测从 V2EX 返回的 API Response 的 http status code,如果不是 200,那么肯定有问题。
zhfsxtx
2013-03-26 23:57:30 +08:00
@Livid 知道了
zhfsxtx
2013-03-27 00:01:35 +08:00
@Livid 刚回头看了下代码,里面已经有加检测http status code的代码了,但还 是挂了。

if (response .statusCode != 200) {
console.log("unnormal statusCode: " + response .statusCode);
return;
};
zhfsxtx
2013-03-27 00:04:06 +08:00
20 response .on('readable', function () {
21 var buf = response .read(1024*1024);
22 if(buf === null) return;
23
24 var topics = JSON.parse(buf.toString());

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/64137

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX