2012-12-10 30 views
0

我有一個分配給寫node.jshttp服務器,這就是爲什麼我不能使用http模塊,你很快就會看到POST請求。無論如何,我需要能夠聽取GET和POST請求。我瞭解它的方式GET只會觸發data事件,併發生火災dataend。這是我的代碼:不能處理的node.js

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

謝謝

回答

1

常見錯誤:定義了一個函數,但沒有調用。

您可以:

得到任何其他後襬脫function關鍵字的正則表達式爲

或者添加()功能後(這是比較recomended)

+0

這是一個新手的錯誤,謝謝。除此之外,如果您對設計有任何意見,我很有興趣聽到 – Yotam

+0

@Yamam,它看起來不錯,只是嵌套得太難以閱讀(併爲您調試)。它不是新手的錯誤,經常發生 – texasbruce