请教利用socket.io如何监控server端的事件
发布于 11 年前 作者 mcdaddy 4798 次浏览 最后一次编辑是 8 年前

在socket.io的官方例子里面提到的都是关于多个客户端通过触发事件达到消息的互相推送。但是我想不明白的是如何让socket.io在建立连接后随时随地得向客户端推送。 比如说后台的数据库或者有个文件发生变动(这个事件和客户端无关)时,由socket.io向所有建立连接的客户端推送信息。 求大神指导!

6 回复

我是在routes(app,io);把io直接传递到express里面,然后循环io.sockets

我尝试了去循环io.sockets发现没有得到想要的Socket。。。大神是否有循环的代码可以借阅

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 数据库实时监控库

多谢示范,基本搞定了。 也谢谢楼上几位

回到顶部