Ich versuche zu verstehen, wie ein Node.js-Projekt zu erstellen.Routing mit Knoten
Ich habe ein Tutorial verfolgt, das ich gefunden habe, um eine Chat-App zu machen.
Das Routing zwischen der Serverseite und der Clientseite funktioniert nicht. Wenn Sie mir erklären könnten, warum, oder vielleicht geben Sie mir einen guten Hinweis zu verstehen, wie alles zusammen funktionieren sollte?
Dies ist der Server:
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"] });
});
});
Und dies ist der HTML-Code mit dem Client-Skript:
<!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>
Vielleicht wird mit ausdrücklicher oder hapi Dinge einfacher machen, aber ich kann dann nicht verstehe, wie ich die Ansicht lade, wie ich hier mit dem fs
Modul.
Danke!
können Sie einige Details über "funktioniert nicht"; Hast du einen Fehler erhalten? Erscheinen die Dinge nicht ohne explizite Fehler? –
Ihr Router hat überhaupt keine Verbindung zu Ihrem http-Server und macht somit nichts. Nicht sicher, woher du diesen Code bekommen hast. Wenn Sie dem Beispiel https://www.npmjs.com/package/router folgen, sehen Sie, dass Ihnen der Teil fehlt, an dem Ihr Router mit dem HTTP-Server verbunden ist. – jfriend00