我有一个JavaScript脚本来检查是否有一个新的帖子在某个子reddit。Reddit神奇地为每个链接提供了一个JSON端点。在本例中,我有以下端点:
https://www.reddit.com/r/webdev/new.json?limit=1然后,我使用请求模块的node.js来获得我需要的特定数据,例如域,自文本,作者和域。然而,每次新帖子发布时,这种情况都会发生变化,因此我使用setInterval函数每隔几秒钟检查一次是否有新帖子发布(这就像某种轮询)。我将每个帖子的唯一id保存到mongo,以防止重复发布,因为这会假设每个帖子对每个请求都是新的。
结构类似于
setInterval(function () {
request({
uri: redditEndpoint,
json: true
}, function (error, response, body) {}) });
// I then save the data sent to mongo as unique to prevent double posting
// I consume the data here
}, 1000);
我想从这个方法转移到websockets。然而,我不确定如何在这样的端点上正确实现websocket,最好使用socket.io
该websocket端点需要由服务器提供-在本例中来自reddit服务器。你不能创建一个websocket连接到一个不提供websocket支持的服务器。
你唯一能做的就是建立一个代理服务器,它轮询reddit服务器的新事件(就像你目前正在做的),然后为其他客户端提供一个websocket端点。