我是Node JS新手,我正在从客户端聊天应用迁移到服务器端应用的过程中。当我的应用程序只是客户端时,对数据库的任何更改都会触发数据再次加载到div中,从而为用户提供实时数据。我的问题是,在使用EJS时,我失去了实时功能。有没有一种方法可以保持实时性?
app.js
const firebase = require("firebase");
const http = require("http");
const ejs = require("ejs");
const express = require("express")
const app = express();
app.set('view engine', 'ejs');
firebase.initializeApp({
<MY-CREDENTIALS>
});
firebase.database().ref("posts").once("value").then(function(snap) {
posts = snap.val();
}).catch(function(err) {
console.log("Error: " + err);
});
app.get('/', function(req, res) {
res.render('pages/index', {"posts": posts});
});
app.listen(8080);
console.log('Listening on 8080');
index.ejs
<% Object.keys(posts).forEach(function(key) { %>
<div class='post'>
<h4 class='body'><%- posts[key].body %></h4>
</div>
<br>
<% }); %>
发布于 2018-06-16 21:47:01
这当然是可能的,但这不是微不足道的。
您需要在服务器和客户端之间建立连接,然后在更新到达时从服务器向客户端发送更新。Firebase使用web套接字来实现这一点,因此这似乎是一种合乎逻辑的方法。
但正如所说的:这是相当复杂的,你应该真的想知道这是否是你想要的方向。
https://stackoverflow.com/questions/50887636
复制相似问题