javascript - 如何创建一个无需重新加载的自动更新新闻源?

标签 javascript mysql reload long-polling updating

我将如何创建自动更新的新闻源?我本来打算使用 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/

相关文章:

javascript - 无法在 reactjs 中使用 map 显示列表项?

javascript - JavaScript 中使用数组进行图像旋转

mysql - 将两个查询合并为同一个表中的一个(相同列/不同行)

php - MySQL加入和排除?

javascript - 按 ENTER 后如何重新启动游戏?

javascript - JS检查getElementById是否存在

javascript - 处理 JavaScript 中的异步行为?

mysql - 如何获取服务器上未找到/未保存的所有 ImageField 的列表?

iphone - 重新加载表的数据

javascript - 将记录添加到动态表(使用 AngularJS)会重新加载整个页面