间隔时间向websockets发送消息

Vik*_*uri 5 real-time setinterval websocket node.js socket.io

我正在尝试在我拥有的网站中构建"查看最近搜索"功能.基本上,我想每隔5秒在网站上显示一个新的最近搜索.

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

这是最好的方法吗?如果是这样,我该如何实施呢?

我正在使用node.js/express.

小智 7

像这样......

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 );
Run Code Online (Sandbox Code Playgroud)

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

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

此外,显示最近的搜索非常重要:这些链接通常不会为用户显示,因为它们通常太随机而无用.也许是热门搜索,但这些信息不会经常变化,以保证频繁刷新.此外,大多数人使用这种技术来列出他们的网站没有真正内容的页面.需要注意的一件重要事情是,如果您允许搜索引擎访问这些页面(不将搜索结果页面列入黑名单robots.txt),那么从Google获取低质量标记的风险非常高.

我最诚挚的建议:虽然这可能是一个很酷的功能,特别是对于管理控制台,它对访问者来说完全没用,并且可以通过添加到Google的索引低质量内容和负载来证明对您网站的SEO值有害.链接无处可用.我甚至不会显示它.