初步試用Faye——基於發佈和訂閱模型的消息系統

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

相關文章
相關標籤/搜索