间隔发送消息到websockets

我试图build立一个“查看最近的search”function到我的网站。 本质上,我想每5秒钟在网站上显示一个新的最近的search。

做这个的最好方式是什么? 我正在考虑让每个页面通过socket.io连接到我的服务器,然后每隔5秒向所有套接字广播一个关于新search的消息。 在客户端,当从套接字服务器接收到消息时,我将使用一些客户端JavaScript来更新网页的最近search部分。

是这样做的最好方法吗? 如果是这样,我该如何执行?

我正在使用node.js / express。

像这样的东西…

var io = require('socket.io').listen(3001); // Send to Everyone setTimeout(function() { io.sockets.send('message'); }, 5000 ); // Send to Everyone on channel test123 setTimeout(function() { io.sockets.emit('test123', {test: "success!"} ); }, 5000 ); 

(未经testing,但应该工作,需要Socket.IO 0.7.x或更新,让我知道这是怎么回事=]

但请注意,这不是处理这个问题的最佳方法。 如果您使用事件来通知您的服务器向客户端发送新数据,那将是最好的。 例如,当您将新数据添加到数据库时,当时(仅当时)将新数据发送到客户端。 当你可以围绕它进行devise的时候,每5秒检查一次有点愚蠢和低效。 Socket.IO的重点是推动而不是轮询。 新技术需要一种新的思维方式。

另外,显示最近的search非常重要:这些链接通常不会显示给用户,因为它们通常太随意,无法使用。 也许是热门的search,但是这些信息不会经常变化以保证频繁的刷新。 此外,大多数人使用这种技术,让他们的网站上列出他们没有真正的内容的网页。 需要注意的一点是,如果您允许search引擎访问这些网页(通过不在robots.txt列入您的search结果页面),您将面临从Google获取低质量标志的极大风险。

我最诚挚的build议:虽然这可能是一个很酷的function,特别是对于pipe理控制台来说,这对访问者来说是完全没有用的,并且可能会损害您的网站的search引擎优化价值,因为Google的索引质量不高,链接无处可用。 我甚至不会显示它。

如果你select5秒的时间,那么我不相信你需要设置socket io。 简单地做一个setInterval,每5秒询问一次服务器是否有新近的search。 这也意味着最近search的调用将不会同步,确保服务器不必一次向每个人发送更新(就像使用socket.io并广播最近的新search消息一样)