如何使用SocketsJs获取nodejs mongodb和angularjs中的实时数据?

问题描述 投票:0回答:1

我有一个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);
    });
};

以上工作正常。但我需要实时获取数据,例如当somone在mongodb中插入新文档时,视图会获得更新。我是套接字的新手,所以任何帮助都表示赞赏。谢谢

node.js angularjs sockets websocket real-time
1个回答
0
投票

为此,你必须在后端和前端Backend中添加一个事件

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

    console.log(socket.id);


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

        io.emit('RECEIVE_TITLE', data);

        console.log('data',data)

    })

});

对于前端,你必须使用socket 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/

© www.soinside.com 2019 - 2024. All rights reserved.