这是我使用this教程构建的基本http
服务器。
我只会在这里显示一个创建服务器的函数:
function Server(resourceMap, rootFolder) {
this.resourceMap = resourceMap;
this.rootFolder = rootFolder;
function connectionHandler(socket) {
var data = "";
console.log('server connected');
console.log('CONNECTED: ' + socket.remoteAddress +':'+ socket.remotePort);
socket.setEncoding('utf8');
socket.on('data',function(newData) {
console.log("NEW DATA\n" + newData); data += newData;
});
socket.on('end',function(data) {
console.log("DATA\n" + data); router.route(data,socket,handle,resourceMap,rootFolder);
});
}
this.server = net.createServer(connectionHandler);
this.port = undefined;
this.startServer = function(port) {
this.port = port;
this.server.listen(port, function() {
console.log('server bound');});
}
}
你可以看到,我有两个听众 - data
和end
。当data
被发出时,我添加了发送给变量的内容,当发出end
时,我将此变量发送到另一个函数。这不适用于GET
请求 - 所有数据都会立即发送,并且不会发出end
。
我必须能够处理这两种方法。此外,这是一个家庭作业,这就是为什么我不能使用http模块。
有什么建议吗?谢谢!
P.S。因为我是node.js
和JavaScript
的新手,欢迎任何一般性评论
答案 0 :(得分:0)
GET动词不包含正文,这就是“数据”事件永远不会被触发的原因。所有代码示例仅对具有正文的动词有效。
当然,您正在学习,但首先您必须了解您想要做什么,然后考虑实施。我建议您继续接受有关nodejs的培训。