2013-07-12 36 views
2

我剛剛進入編碼服務器端javascript,並且一直在閱讀關於socket.io和node.js的教程,但是我還沒有遇到任何展示如何使用節點的內容。 js訪問一個mysql數據庫。如何使用socket.io訪問mysql數據庫

說例如我想創建一個方法來偵聽我的數據庫中的一個表,在 mysql.something.com(與數據庫:數據庫,用戶名:用戶名等), 我怎麼會得到socket.io node.js連接到該數據庫並監聽該表的新輸入,然後返回該輸入?

我想知道是否有人可以給我一個使用發佈訂閱模型的特定示例。

感謝您的幫助。

+0

Socket.IO不能。你需要使用Node的MySQL模塊('npm install mysql' IIRC)並使用它。這聽起來像你誤解了基本結構 – Bojangles

+0

噢好吧。我想我會編輯我的問題。 –

回答

1

你必須以定期的間隔輪詢mysql數據庫的更改,並在檢測到更改時發出socket.io事件。這裏有一個僞代碼

var mysql = require('mysql'); 
var connect = mysql.createConnection({ 
     host: 'localhost' 
    , database: 'your_database' 
    , username: 'user' 
    , password: 'password'}); 

var initial_result; 

// check for changes after 1 second 

setTimeout(function(){ 

    connect.query('select * from your_table', function(err, result) { 
     if(err) { throw new Error('Failed');} 
     initial_result = initial_result || result; 

     if(Changed(initial_result, result)) { socket.emit('changed', result); } 

    }); 

    function Changed(pre, now) { 
    // return true if pre != now 
    } 


}, 1000); 
+1

謝謝你的例子,但我是尋找一些使用更多的發佈訂閱模型,而不是投票。 –

+0

據我所知Mysql沒有這種功能 – az7ar

+0

我可以通過使用mongodb來做到這一點。如果我給定setinterval意味着它會頻繁地獲取數據庫。 –