在socket.io的官方例子里面提到的都是关于多个客户端通过触发事件达到消息的互相推送。但是我想不明白的是如何让socket.io在建立连接后随时随地得向客户端推送。 比如说后台的数据库或者有个文件发生变动(这个事件和客户端无关)时,由socket.io向所有建立连接的客户端推送信息。 求大神指导!
http://socket.io/ 首页这个例子应该就是可以随时发的把. 左边 server 把 ‘socket’ 存下来,以后在拿出来就可以发了. 就和 client ‘socket’ 存着以后可以再用一样吧…好像也和 websocket 差不多的
可参阅我最近做的一个项目:
https://github.com/blacktail/real-edit
我的方法是在连接后将socket存下来,以后广播操作就是遍历sockets集合 当然socket.io本来就有一个broadcast方法,但是由于我需要一个频道的概念,就是广播是频道内的广播,所以就自己实现了一个
//这里使用express. var express=require(“express”); var app = express.createServer(); var fs = require(‘fs’);
var filePath = "d:\test.conf";
//监视文件 fs.watch(filePath ,function(event,filename){ if(event=="change") //如果文件变动了 { socket.broadcast.emit('msg’,data); } }); app.listen(8888);
//客户端 var url = window.location.protocol+’//’+window.location.host; var socket = io.connect(url); socket.on('msg’, function (data) { showMsg(data); });
如果是数据库的话你看看这个库:node-dbmon 数据库实时监控库