Beginner Node.js routing on on submit

Просто начав играть с узлом и немного потрудившись при маршрутизации, я просмотрел пример разделения маршрутизации, но подумал, что это немного ускорилось для моего мастерства, поэтому я сделал это следующим образом: кто-нибудь посоветует следующий код

index.html

<div id="test-container">
 <h2>Test</h2>
 
 <form id="test-input2">
 
 </form>
</div>

ui.js

$('#test-input').submit(function(e){
e.preventDefault();
socket.emit('route', null);
});

ui_backend.js

exports.listen = function(server){

 io = socketio.listen(server);
 io.set('log level', 2);
 io.sockets.on('connection', function(socket){
 route_testing(socket);
 });
}

function route_testing(socket){
 socket.on('route', function(req, res){
 res.render('test', function(err, html){

 });
 })
}

server.js

app.get('/test', function(req, res){
 res.sendfile(__dirname + '/views/test.html');
});

Редактировать:

Проблема в том, что я не могу заставить маршрутизацию работать.

2 ответа

Предложение:

Вы настраиваете маршрут на своем server.js

app.get("/test", routes.page("test"));

В вашем ui_backend.js

module.exports = function (view) {
 return function (req, res) {
 res.render(view + ".html", {
 page: view
 });
 };
};

Просто res.render() в порядке. sendfile - это не то, что вы хотите.


function route_testing(socket){
 socket.on('route', function(req, res){
 res.render('test', function(err, html){

 });
 })
}

с socket.on(message,callback), нет аргументов req, res. Вы смешиваете express и socket.io api.

в сообщении сокета необходимо выпустить другое сообщение сокета. socket.emit(message)

socket.on('route', function(data){
 socket.emit(message,somedata);
 })

У вас в основном есть сервер с двумя различными протоколами здесь, веб-порты и классический http. Socket.io api довольно ясен: http://socket.io/ вы не можете создать другой api и ожидать, что он будет работать.

app.get('/test', function(req, res){
 res.sendfile(__dirname + '/views/test.html');
});

отправляет /views/test.html в качестве прикрепления. Вы не хотите этого делать, вы хотите выразить, чтобы отобразить какой-либо html-шаблон или страницу:

app.get('/test', function(req, res){
 res.render('test');
 });

должен работать из коробки с помощью экспресс-сценария по умолчанию.

Поэтому, когда вы хотите запросить HTTP, используйте экспресс-api.

когда вы хотите отправить сообщение через веб-сайты, используйте socket.io api.

licensed under cc by-sa 3.0 with attribution.