刚在首页发现Faye,有点兴趣就转悠到了官方网站.按照首页的代码,试了下发现不成功,看文档后发现首页上的client代码是不完整的.固然node已经安装了Faye模块. javascript
server.js这个直接抄首页的就能够: html
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>
先运行服务器: java
D:\nodefaye>node server.js
再用浏览器打开 client.html,能够多放几个tab,在其中一页的javascript console中执行: node
client.publish('/messages', {text: 'Hello world'});
发现全部页面的console里都打印了 redis
Got a message: Hello world
Oh,yeah,client--->client方式成了.再接着整client.js,发现下面的代码错了: shell
client.subscribe('/messages'), function(message) { console.log('Got a message: ' + message.text);}
改正后运行: 浏览器
D:\nodefaye>node client.js
可多开几个命令行窗口运行,如今浏览器再publish消息, 命令行窗口也能收到了. ruby
再试交互式运行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,内存方式.总之感受不错~.