Ответы пользователя по тегу Express.js
  • Как правильно использовать роутинг в связке Express + Angular?

    @pasutavitaliy
    :)
    Скорее всего, если вы используете роутинг от ангуляра, то ваш експресс должен работать как апи и он не должен ничего отрисововать.

    Что то типа такого на клиенте
    .state('login', {
      cache: false,
      url: '/login',
      templateUrl: 'templates/auth/login.html'
    });
    ---------
    .controller('loginCtrl', function ($scope, Request, $state) {
    
            $scope.login = function (operator) {
                Request.sendRequest('Your/path/to/express/api/current/method', obj).then(
                    function resolve(resp) {
                       // handle success answer, call function to render some partial of html etc.
    
                    },
                    function reject(resp) {
                      //  handle error
                    }
                );
    })


    а ваш експресс, работающий по принципу апи, будет отдавать только данные, все отрисовки будет делать ангуляр,
    все работы с шаблонами и т.д.
    Ответ написан
    Комментировать
  • Как в real-time показывать добавлений комментарий?

    @pasutavitaliy
    :)
    Глобально в вашем случае - нет разницы между выводом комментрия к посту всем кто на странице и выводом сообщения в чате всем кто в нем сейчас состоит. Поэтому примеры с чатами вполне подойдут.
    А логика примерно следущаяя:
    1) На сервере создать сокет сервер, который будет слушать по некому урлу:порту
    var express = require('express');
    var app = express();
    var io = require('socket.io')(http);
     http = require('http').Server(app);
     http.listen(yourPort, yourUrl, function () {
            console.log('App listening at http://%s:%s', yourUrl, yourPort);
            io.on('connection', function(socket){...}

    2) На клиенте подключится к этому урлу:порту
    socket = io.connect(yourUrl:yourPort, {secure: true, forceNew: true});

    3) На клиенте слушать некое событие из сервера. Например назовем его onCommentAdd
    socket.on('onCommentAdd', function(msg) {
            yourFuncToAddCommentInHTMLDOM(msg)
     });


    Где на месте msg будет вся необходимая информация с сервера о комментарии

    4) На сервере когда вы выполнили сохранение в базу комментария вызовите emit метод екземпляра вашего io c нужными параметрами. Примерно так
    Socket.emit('onCommentAdd', {author: "Vova", date: "1454576067", "text": "Azazazaza lalka" });


    В принципе это все, если всё сделаете правильно, то на клиенте получите новый коммент.
    Надеюсь, это поможет
    Ответ написан
    1 комментарий