剛在首頁發現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,內存方式.總之感受不錯~.