我有一个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中插入新文档时,视图会获得更新。我是套接字的新手,所以任何帮助都表示赞赏。谢谢
为此,你必须在后端和前端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/
对于服务器。