Javascript Response.write()不返回值

Javascript Response.write()不返回值,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我一直在关注nodejs的介绍,但在返回response.write()时遇到了问题 当我转到domain:8001时,我的server.js代码可以很好地返回“hello world”,但导航到domain:8001/socket.html会返回一个空白屏幕 我已经使用console.log检查了编写“socket在这里”的代码是否正在执行,但我不确定为什么它没有执行任何操作 server.js: var http = require("http"); var url = require('u

我一直在关注nodejs的介绍,但在返回response.write()时遇到了问题

当我转到domain:8001时,我的server.js代码可以很好地返回“hello world”,但导航到domain:8001/socket.html会返回一个空白屏幕

我已经使用console.log检查了编写“socket在这里”的代码是否正在执行,但我不确定为什么它没有执行任何操作

server.js:

var http = require("http");
var url = require('url');
var fs = require('fs');

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

    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){
                if (error){
                    response.writeHead(404);
                    response.write("opps this doesn't exist - 404");
                }
                else{
                    response.writeHead(200, {"Content-Type": "text/html"});

                    response.write("socket is here.");
                }
            });
            break;
        default:
            response.writeHead(404);
            response.write("opps this doesn't exist - 404");
            break;
    }

    response.end();
});

server.listen(8001);

var io = require('socket.io').listen(server);
html:(虽然它不应该与其中包含的内容有关)


var socket=io.connect();
这是我们的socket.html文件

在等待
fs.readFile()
完成之前,您将结束响应。试试这个:

var http = require("http");
var url = require('url');
var fs = require('fs');

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

    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){
                if (error){
                    response.writeHead(404);
                    response.write("opps this doesn't exist - 404");
                }
                else{
                    response.writeHead(200, {"Content-Type": "text/html"});

                    response.write("socket is here.");
                }
                response.end();
            });
            return;
        default:
            response.writeHead(404);
            response.write("opps this doesn't exist - 404");
            break;
    }

    response.end();
});

server.listen(8001);

var io = require('socket.io').listen(server);

另外,执行
fs.readFile(uuu dirname+path,…)
具有潜在的危险性,因为有人可能发送类似于
/../../../../../../../../etc/passwd
的请求。相反,您应该使用
path
模块将
\uuu dirname+path
解析/规范化为绝对路径,然后确保绝对路径以公共目录的绝对路径开始。

您是否尝试过使用不尝试加载脚本的页面?浏览器在脚本加载时停止解析页面,如果存在问题,可以解释空白页。我尝试了没有脚本的SoCKET.HTML,但它似乎给了我同样的问题。
var http = require("http");
var url = require('url');
var fs = require('fs');

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

    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){
                if (error){
                    response.writeHead(404);
                    response.write("opps this doesn't exist - 404");
                }
                else{
                    response.writeHead(200, {"Content-Type": "text/html"});

                    response.write("socket is here.");
                }
                response.end();
            });
            return;
        default:
            response.writeHead(404);
            response.write("opps this doesn't exist - 404");
            break;
    }

    response.end();
});

server.listen(8001);

var io = require('socket.io').listen(server);