0

我将如何创建自动更新的新闻源?我打算使用 NodeJS,但有人告诉我,当我接触到成千上万的用户时,它就行不通了。现在,我有它,以便您可以将文本发布到新闻源,并将保存到 mysql 数据库中。然后,每当您加载页面时,它都会显示该数据库中的所有帖子。这样做的问题是每次有更新时您都必须重新加载页面。我打算用它来告诉nodejs服务器有人发布了更新......

索引.html

function sendPost(name,cont) {
    socket.emit("newPost", name, cont);
}

应用程序.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 和/或程序有任何建议吗?

4

1 回答 1

2

你在正确的轨道上。在您的 Node 网络服务器上构建一个路由,该路由将导致它获取新闻帖子并向所有连接的客户端广播。然后,只需向 Node.js 发起请求。

在节点到客户端的前端,您需要学习如何进行长轮询。这相当容易——您让客户端连接并且在消息通过之前不要结束响应。您可以通过事件处理程序来处理这个问题(Postal.JS 值得一试)。

AJAX 部分很简单。$.get("your/node/url").then(function(d) { });开箱即用。当它回来时(成功或失败),重新启动它。将其超时设置为 60 秒左右,并在一个事件针对它的那一刻结束节点前端的响应。

大多数网站都是这样做的。websockets 的问题在于,由于旧的 IE 版本不支持它们,它们现在有点害群之马。如果您负担得起,请考虑进行长轮询。

(附注。告诉你 Node 在成千上万的用户中无法工作的人是在谈论他们的屁股。如果有的话,Node 比 PHP 更适应大并发,因为 Node 上的连接几乎不需要任何东西来保持活动状态由于 Node 的事件驱动性质。不要听反对者的意见。)

于 2013-05-03T00:07:50.620 回答