Как получить данные в реальном времени в nodejs mongodb и angularjs, используя SocketsJs? - PullRequest
0 голосов
/ 10 марта 2019

У меня есть сервер nodejs, который получает список коллекций от mongodb.Вот его код.так как я новичок в сокетах, так что ...

const express = require("express");
const app = express();
const http = require("http").Server(app);
const socketio = require('socket.io');

после этого я просто получаю данные в маршруте.и еще одна вещь - весь код находится в одном файле, и мне нужен экспресс-маршрут, поскольку в приложении есть другие маршруты.вот код mongodb для получения списка

app.post("/getAllOfferManagement",
    async (req, res) => {
        try {
            MongoClient.connect(url,
                function(err, db) {
                    if (err) throw err;
                    var dbo = db.db("realtime");
                    dbo
                        .collection("offer")
                        .find({})
                        .toArray(function(err,
                            result) {
                            if (err) throw err;
                            // console.log('getting it ');
                            res.send(result);
                            db.close();
                        });
                });
        } catch (err) {
            res.send("error");
        }
    }); // its all working fine when i hit the route

http.listen(5000, function() {
    console.log("Server Started!");
});
//serversidecode ends here

Теперь я получаю данные с помощью угловых данных, и вот код для этого

$scope.getAllOffer = function() {

    $scope.mongoloader = true;

    //nodejs api endpoint 
    $http.post("http://localhost:5000/getAllOffer").then(function(res) {
        $scope.offersArray = res.data;
        console.log('data here', res.data);
    });
};

вышеописанное работает отлично.но мне нужно получать данные в режиме реального времени, например, когда кто-то вставляет новый документ в mongodb, вид обновляется.Я новичок в сокеты, поэтому любая помощь приветствуется.Спасибо

1 Ответ

0 голосов
/ 10 марта 2019

Для этого нужно добавить событие в бэкэнд, а также в веб-интерфейс Backend

io.on('connection', (socket) => {

    console.log(socket.id);


    socket.on('SEND_TITLE', function(data){

        io.emit('RECEIVE_TITLE', data);

        console.log('data',data)

    })

});

Для интерфейса вы должны использовать сокет io клиентский модуль

import io from "socket.io-client";
socket = io('your backend host url')

    socket.on('RECEIVE_TITLE', function(data)
      Console. Log(data);

  });

Синтаксис внешнего интерфейса может отличаться по углу. Как я не знаком с угловой

Для получения дополнительной информации посетите.

Принудительная сторона.

https://socket.io/docs/client-api/

Для сервера.

https://socket.io/docs/server-api/

...