初步试用Faye——基于发布和订阅模型的消息系统

原创
2013/10/19 00:23
阅读数 7.4K

刚在首页发现Faye,有点兴趣就转悠到了官方网站.按照首页的代码,试了下发现不成功,看文档后发现首页上的client代码是不完整的.当然node已经安装了Faye模块.

server.js这个直接抄首页的就可以:

var http = require('http'),
    faye = require('faye');
    
var server = http.createServer(),
    bayeux = new faye.NodeAdapter({mount: '/'});    
    
bayeux.attach(server);
server.listen(8000);
client.js这个是在nodejs下运行的:

var faye = require('faye');

var client = new faye.Client('http://localhost:8000');

client.subscribe('/messages', function(message){
    console.log('Got a message: ' + message.text);
});
上面是对的,一开始client代码写错了,发现怎么也出不来消息!郁闷了一会,转头去弄浏览器客户端了client.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en">
<head>
	<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
	<title>Faye client</title>
    <!--  根据服务器faye.NodeAdapter mount位置不同,引用js位置也不同  -->
    <script type="text/javascript" src="http://localhost:8000/client.js"></script>

</script>
</head>
<body>
	<script type="text/javascript">
        var client = new Faye.Client('http://localhost:8000/');

        client.subscribe('/messages', function(message) {
          console.log('Got a message: ' + message.text);
        });
    </script>
</body>
</html>

先运行服务器:

D:\nodefaye>node server.js

再用浏览器打开 client.html,可以多放几个tab,在其中一页的javascript console中执行:

client.publish('/messages', {text: 'Hello world'});

发现所有页面的console里都打印了

Got a message: Hello world

Oh,yeah,client--->client方式成了.再接着整client.js,发现下面的代码错了:

client.subscribe('/messages'), function(message) { console.log('Got a message: ' + message.text);}

改正后运行:

D:\nodefaye>node client.js

可多开几个命令行窗口运行,现在浏览器再publish消息, 命令行窗口也能收到了.


再试交互式运行client.js

D:\nodefaye>node
> .load client.js


> client.publish('/messages', {text: 'hello world'})
{}
> Got a message: hello world
浏览器和命令行窗口都能收到.


再也交互方式运行server.js

D:\nodefaye>node
> .load server.js


> bayeux.getClient().publish('/messages', {text: 'hello world'})
所有客户端都能收到消息, 浏览器的页面可能要刷新下再试.


还有就是浏览器客户端可以不用从服务器下载client.js,而直接拷贝node的模块目录中的faye-browser-min.js来用

<script type="text/javascript" src="faye-browser-min.js"></script>
OK,试完了.

Faye还有一个ruby实现,ruby不熟,有空再学再试了.官方文档中还提到消息引擎可以使用redis,默认是memory,内存方式.总之感觉不错~.

展开阅读全文
打赏
0
56 收藏
分享
加载中

引用来自“wfifi”的评论

引用来自“Injection”的评论

demo提供下载吗?

很简单的几个文件,放这里了http://pan.baidu.com/share/link?shareid=2585095568&uk=1912925180

非常感谢,太懒了,想直接看效果
2013/10/20 01:55
回复
举报
wfifi博主

引用来自“Injection”的评论

demo提供下载吗?

很简单的几个文件,放这里了http://pan.baidu.com/share/link?shareid=2585095568&uk=1912925180
2013/10/19 21:25
回复
举报
demo提供下载吗?
2013/10/19 18:15
回复
举报
wfifi博主

引用来自“yaoyaolingma”的评论

相比于别的发布订阅,发现主要的区别了吗?

Sorry,其他消息系统太多了,还没研究过,呵呵,
2013/10/19 14:46
回复
举报
相比于别的发布订阅,发现主要的区别了吗?
2013/10/19 09:42
回复
举报
mark,回家慢慢看
2013/10/19 08:52
回复
举报
更多评论
打赏
6 评论
56 收藏
0
分享
返回顶部
顶部