我做的这台代理服务器作为网关,把来自公网客户端的请求通过http转发到内部的连天服务器,但在开发阶段由于客户端发送带未转义的双引号,换行符等字符,导致聊天服务器解析json数据包出错,从而未响应我的网关服务器。
我于是设置了请求超时,和错误事件处理,以结束客户端的请求。但即使这样,node写的网关服务器还是经常被挂起,即进程和端口一直在,但就是不能再响应来自客户端的请求了,最后返回server no reult。初次使用nodejs写,没有系统学习过,请大神帮忙看看我这代码有啥问题。
回复 (5)
干嘛自己写,用这个https://github.com/nodejitsu/node-http-proxy
nodejitsu官方用的。自己写太麻烦了
好长,不看了。 不要用node做代理,用nginx。 node毕竟是js写逻辑,不如nginx的c语言更底层,而且很现成方便的东西,不用岂不是很可惜。 而且两个小时你就可以学会并搭建一个nginx代理服务器。
另外,即便node做服务器,要有一个文件专门写好路由映射规则,逻辑细节和规则分开会比较容易调试。
var proxy = function () { //封装异步请求,其余的你自己改试试,主要问题应该是没处理好node.js 的异步问题,好久没做Node.js开台开发,最近在研究JS本身。 http.request(options, function (res) { log.info('From ChatServer STATUS: ' + res.statusCode); log.info('From ChatServer HEADERS: ' + JSON.stringify(res.headers)); res.pipe(client_res, { end: true }); }); }; client_req.on('end', proxy); 建议用责任链模式来设计,维护起来更方便 .
80行代码。。。。,关于用javascript 写逻辑,用高阶函数写逻辑还是挺爽的,没什么不好。
@hackerjs 最大的问题就是性能,javascript 与 c不在一个量级