我有一个在http
中编写node.js
服务器的任务,这就是为什么我不能使用http
模块,因为您很快就会看到。无论如何,我需要能够听取GET和POST请求。我理解它的方式GET仅触发data
事件,并发布data
和end
。这是我的代码:
function Server(resourceMap, rootFolder) {
this.resourceMap = resourceMap;
this.rootFolder = rootFolder;
function connectionHandler(socket) {
console.log('server connected');
console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);
socket.setEncoding('utf8');
socket.on('data',function(data) {
var re = new RegExp("^( *)(GET)", "i");
if (data.match(re) != null) {
console.log("Handling GET request");
router.route(data,socket,handle,resourceMap,rootFolder);
}
else {
(function() {
var postData = data;
socket.on('data',function(data) {
postData += data;
});
console.log(postData);
socket.on('end',function(postData) {
console.log("END");
console.log("Handling POST request");
router.route(postData,socket,handle,resourceMap,rootFolder);
});
});
}
});
}
this.server = net.createServer(connectionHandler);
this.port = undefined;
this.startServer = function(port) { //Maybe change backlog for security reasons
this.port = port;
this.server.listen(port, function() { //'listening' listener add handle object here
console.log('server bound');});
}
}
GET
请求工作得很好。使用POST
它甚至不输入匿名函数。
任何想法为什么以及如何解决它?
编辑:已解决 - 我定义了该功能但没有调用它:) 如果您对我的设计有任何意见,我很乐意听到,因为我是node.js和JavaSCript的新手
谢谢
答案 0 :(得分:1)
常见错误:定义了一个函数但没有调用。
你可以:
在正则表达式
之后删除function
关键字
或者在功能之后添加()
(建议更多)