【问题标题】:How to return a page to Node.js client?如何将页面返回给 Node.js 客户端?
【发布时间】:2014-08-12 03:46:49
【问题描述】:

我对 Node.js 很陌生。我正在探索路由(代码如下所示)。当客户端请求本地页面时,在本例中为 socket.html,客户端不会获得路由页面,而是显示一个空白页面。我没有看到来自 Node.js 框架的任何错误。 感谢您的关注。

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

    switch(path){
        case '/':
            response.writeHead(200, {'Content-Type': 'text/html'});
            response.write('hello world');
            break;
        case '/socket2.html':
            fs.createReadStream(__dirname + path, function(error, data){
                if (error) {
                    console.log('there is error for ' + path);
                    response.writeHead(404);
                    response.write("opps this doesn't exist - 404");
                }
                else {
                    console.log('sending file ' + data);
                    response.writeHead(200, { 'Content-Type': 'text/html' });
                    response.write(data);
                }
            });
            break;
        default:
            response.writeHead(404);
            response.write("opps this doesn't exist - 404");
            break;
    }
    console.log('send reponse');
    response.end();
});

console.log('Listening');
server.listen(8001);

console.log('Socket started for ' + path);
io.listen(server);

//socket2.html页面内容

<!DOCTYPE html>
<html>

    <head>
        <title></title>  
        <script src="node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js"></script>
    </head>


    <body>
        <script>
            var socket = io.connect();
        </script>
        <div>This is our socket2.html file</div>
    </body>
</html>

//实际页面内容

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv="Content-Type" 
content="text/html; charset=windows-1252"></HEAD>
<BODY></BODY></HTML>

【问题讨论】:

标签: node.js socket.io


【解决方案1】:

请查看catberry.jsexpress 框架。

我确信没有人使用 node 内置的 HTTP 服务器和 switch 运算符来解决这个任务。 也许您只需要一个单独的 Web 服务器,例如 nginx,它提供静态服务并将一些位置传递给 node.js 应用程序以呈现一些动态页面。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2021-01-24
    • 2021-09-22
    • 2011-05-05
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多