我将如何创建自动更新的新闻源?我本来打算使用 NodeJS,但有人告诉我,当我的用户数量达到数千时,这行不通。现在,我有了它,您可以将文本发布到新闻源,并且它将保存到 mysql 数据库中。然后,每当您加载页面时,它都会显示该数据库中的所有帖子。这样做的问题是每次有更新时您都必须重新加载页面。我打算用它来告诉 Nodejs 服务器有人发布了更新...
index.html
function sendPost(name,cont) {
socket.emit("newPost", name, cont);
}
app.js
socket.on("newPost", function (name,cont) {
/* Adding the post to a database
* Then calling an event to say a new post was created
* and emit a new signal with the new data */
});
但这对很多人来说都不起作用。有人对我应该从哪里开始、我需要使用的 api 和/或程序有任何建议吗?
最佳答案
你走在正确的道路上。在 Node Web 服务器上构建一条路由,使其获取新闻帖子并向所有连接的客户端广播。然后,只需向 Node 发出请求即可。
在节点到客户端方面,您需要学习如何进行长轮询。这相当简单 - 您让客户端连接并且在消息到达它之前不要结束响应。您可以通过事件处理程序来处理此问题(Postal.JS 值得为此选择)。
AJAX 部分很简单。 $.get("your/node/url").then(function(d) { });
开箱即用。当它回来时(无论成功还是失败),重新启动它。将其超时设置为 60 秒左右,并在一个事件针对它时结束节点前端的响应。
大多数网站都是这样做的。 websockets 的问题在于,现在它们有点害群之马,因为旧的 IE 版本不支持它们。如果您负担得起,请考虑使用长轮询。
(嘘。谁告诉你 Node 无法在成千上万的用户中工作,那是在胡言乱语。如果有的话,Node 比 PHP 更适合大并发,因为 Node 上的连接几乎不需要任何东西由于 Node 的事件驱动特性而保持活力。不要听反对者的话。)
关于javascript - 如何创建一个无需重新加载的自动更新新闻源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16349638/