2012-12-09 66 views
0

以下是我使用this教程構建的基本http服務器。 我只在這裏展示一個函數創建服務器:同時收聽GET和POST,node.js服務器

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');}); 
    } 
} 

因此,大家可以看到,我有兩個聽衆 - dataend。當發射data時,我添加發送給變量的內容,並且當發射end時,我將此變量發送給另一個函數。這不適用於GET請求 - 所有數據立即發送,並且不會發出end

我必須能夠處理這兩種方法。另外,這是一項家庭作業,這就是爲什麼我不能使用http模塊。

有什麼建議嗎?謝謝!

P.s.因爲我是node.jsJavaScript的新手,歡迎任何一般性評論

回答

0

GET動詞不包含body,這就是'data'事件永遠不會被觸發的原因。所有代碼示例僅適用於具有主體的動詞。

當然,你正在學習,但首先你必須明白你想要做什麼,然後考慮實施。我的建議是繼續關於nodejs的培訓。