Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带节点的路由_Javascript_Node.js_Express_Routes_Hapijs - Fatal编程技术网

Javascript 带节点的路由

Javascript 带节点的路由,javascript,node.js,express,routes,hapijs,Javascript,Node.js,Express,Routes,Hapijs,我试图理解如何构建Node.js项目 我已经按照我找到的教程制作了一个聊天应用程序 服务器端和客户端之间的路由不工作。 如果你能给我解释一下原因,或者,给我一个很好的参考,让我了解它应该如何协同工作 这是服务器: var http = require('http'); const fs = require('fs'); var Router = require('router') var router = Router(); router.get('/t

我试图理解如何构建Node.js项目

我已经按照我找到的教程制作了一个聊天应用程序

服务器端和客户端之间的路由不工作。 如果你能给我解释一下原因,或者,给我一个很好的参考,让我了解它应该如何协同工作

这是服务器:

    var http = require('http');
    const fs = require('fs');
    var Router = require('router')

    var router = Router();
    router.get('/test', function (req, res) {
        res.setHeader('Content-Type', 'text/plain; charset=utf-8');
        res.end('Hello World!');
    })

    var app = http.createServer(function (request, response) {
        fs.readFile("public/client.html", 'utf-8', function (error, data) {
            response.writeHead(200, {'Content-Type': 'text/html'});
            response.write(data);
            response.end();
        });
    }).listen(1337);


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

    io.sockets.on('connection', function(socket) {
        socket.on('message_to_server', function(data) {
            io.sockets.emit("message_to_client",{ message: data["message"] });
        });
    }); 
这是带有客户端脚本的HTML:

<!DOCTYPE html>
<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
        <script src="/socket.io/socket.io.js"></script>
        <script> 
            var socketio = io.connect("127.0.0.1:1337");
            socketio.on("message_to_client", function(data) {
                document.getElementById("chatlog").innerHTML = (document.getElementById("chatlog").innerHTML + "<hr/>" + data['message']);
            });

            var request = $.ajax({
                           url: "/test",
                           type: "GET"  
                        });
            request.done(function(msg) {
                console.log(1111);
            });

            request.fail(function(jqXHR, textStatus) {
                alert( "Request failed: " + textStatus );
            });

            function sendMessage() {                
                var msg = document.getElementById("message_input").value;
                socketio.emit("message_to_server", { message : msg});
                window.scrollTo(0,document.body.scrollHeight);
            }
        </script>

    </head>
    <body>
        <div id="wholeChat">                
            <div id="chatlog"></div>                
            <div>
                <input type="text" id="message_input"/>
                <button onclick="sendMessage()">send</button>
            </div>
        </div>        
   </body>
</html>

var socketio=io.connect(“127.0.0.1:1337”);
socketio.on(“消息发送到客户端”,函数(数据){
document.getElementById(“chatlog”).innerHTML=(document.getElementById(“chatlog”).innerHTML+“
”+数据['message']); }); var请求=$.ajax({ url:“/test”, 键入:“获取” }); request.done(函数(msg){ 控制台日志(1111); }); 请求失败(函数(jqXHR,textStatus){ 警报(“请求失败:+textStatus”); }); 函数sendMessage(){ var msg=document.getElementById(“消息输入”).value; emit(“message_to_server”,{message:msg}); scrollTo(0,document.body.scrollHeight); } 发送
也许使用express或hapi会使事情变得更简单,但是我不明白如何像在这里使用
fs
模块那样加载视图


谢谢

我不知道你为什么要这样发送index.hmml,有更简单的方法,比如

var connect = require("connect");
var serveStatic = require("serve-static");
connect().use(serveStatic(__dirname)).listen(2000,function(){
    console.log("Server running on 2000...");
});
只需键入localhost:2000/yournindexfile.html

或者你可以使用express(这是一个很棒的模块,你应该学习它)

如果您真的想使用“fs”模块,请尝试将其添加到响应头中的代码中

onRequest = function(req,res){       
    res.writeHead(200,{"Content-Type": "text/html"});
    fs.createReadStream("./index.html").pipe(res);    
}

http.createServer(onRequest).listen(2000);

你能提供一些关于“不工作”的细节吗;你有错误吗?是不是在没有显式错误的情况下没有显示出来?您的路由器根本没有连接到http服务器,因此没有做任何事情。不知道你从哪里得到的密码。如果您按照这里的示例进行操作,您会发现您缺少路由器连接到http服务器的部分。@bratibrat well您在serer上的路由是/test..但是您正在调用/client/test检查这一点
onRequest = function(req,res){       
    res.writeHead(200,{"Content-Type": "text/html"});
    fs.createReadStream("./index.html").pipe(res);    
}

http.createServer(onRequest).listen(2000);