2015-08-27 61 views
0

我按照此tutorial了解Nodejs和Io套接字。 但我有一个加载页面socket.html的问题。Nodejs发送基本网页

我的目标是让他打印:

<html> 
    <head></head> 
    <body>This is our socket.html file</body> 
</html> 

但结果是一个空白页。

我试着让他打印不同的东西,你可以在我的代码中看到评论,但似乎没有任何工作。我确信代码正在到达正确的循环,因为他按预期在控制台中输入“enterLoop”。

为什么这不起作用?

var http = require("http"); 
var url = require('url'); 
var fs = require('fs'); 
var io = require('socket.io'); 

var server = http.createServer(function(request, response){ 
    console.log('Connection'); 
    var path = url.parse(request.url).pathname; 

    switch(path){ 
     case '/': 
      response.writeHead(200, {'Content-Type': 'text/html'}); 
      response.write('hello world'); 
      break; 
     case '/socket.html': 
      //fs.readFile(__dirname + path, function(error, data){ 
       fs.readFile(__dirname + "/socket.html", function(error, data){ 
       if (error){ 
        response.writeHead(404); 
        response.write("opps this doesn't exist - 404"); 
       } 
       else{ 

        response.writeHead(200, {"Content-Type": "text/html"}); 
        response.write(data, "utf8"); 
        //response.writeHead(404); 
        //response.write("opps this doesn't exist - 4055"); 
        //response.writeHead(200, {"Content-Type": "text/html"}); 
        //response.write(data); 
        //response.writeHead(200, {'Content-Type': 'text/html'}); 
        //response.write('hello world'); 
        console.log("enterLoop"); 
       } 
      }); 
      break; 
     default: 
      response.writeHead(404); 
      response.write("opps this doesn't exist - 404"); 
      break; 
    } 
    response.end(); 
}); 

server.listen(8001); 

io.listen(server); 

回答

1

您正在阅读的异步文件,所以response.end()获取调用之前,它可以读取文件的读写响应。将response.end()移到回调中,它应该可以工作。

var http = require("http"); 
var url = require('url'); 
var fs = require('fs'); 
var io = require('socket.io'); 

var server = http.createServer(function(request, response){ 
    console.log('Connection'); 
    var path = url.parse(request.url).pathname; 

    switch(path){ 
     case '/': 
      response.writeHead(200, {'Content-Type': 'text/html'}); 
      response.write('hello world'); 
      response.end(); 
      break; 
     case '/socket.html': 
      //fs.readFile(__dirname + path, function(error, data){ 
       fs.readFile(__dirname + "/socket.html", function(error, data){ 
       if (error){ 
        response.writeHead(404); 
        response.write("opps this doesn't exist - 404"); 
        response.end(); 
       } 
       else{ 

        response.writeHead(200, {"Content-Type": "text/html"}); 
        response.write(data, "utf8"); 
        //response.writeHead(404); 
        //response.write("opps this doesn't exist - 4055"); 
        //response.writeHead(200, {"Content-Type": "text/html"}); 
        //response.write(data); 
        //response.writeHead(200, {'Content-Type': 'text/html'}); 
        //response.write('hello world'); 
        console.log("enterLoop"); 
        response.end(); 
       } 
      }); 
      break; 
     default: 
      response.writeHead(404); 
      response.write("opps this doesn't exist - 404"); 
      response.end(); 
      break; 
    } 

}); 

server.listen(8001); 

io.listen(server);