2015年5月23日 星期六

Nodejs實作(3) - Socket.io + MySQL 即時同步訊息

這一個練習是延續上一篇 Nodejs實作(2) - Socket.io 實現多人即時同步聊天室,但是加上了 MySQL,想做訊息儲存,另一方面也是想要模仿例如 Facebook,Twitter 等即時狀況同步的情況。

新增 MySQL Table

status table structure

設置 Node 環境


設置此次運行環境因此先在當前目錄設定  package.json 安裝待會用到的套件及相依性,並且利用 command line 在當前目錄 npm install
package.json


撰寫 server.js


引入套件並且設置好 MySQL 連線資訊,再來設定 route.
撰寫 socket.io function,來處理 client端與server端互動功能,注意以下幾個 socket.io 的用法:
  1. io.sockets.emit:觸發所有 sockets(Client端)。
  2. io.sockets.on:等待所有進入的 sockets(Client端)。
  3. socket.emit:與 socket.on 相搭配,為event driven之用法,但對像為單一特定 socket。
  4. socket.on
可以注意第26行, add_status 所等待的 callback 為 res,而 res 是 MySQL 處理連接以及query成功與否的 callback


撰寫 index.html

可注意第10行,當socket與server連接上後,JQuery去判斷是否 add_status 的按鈕是否被按下,若有的話就將 comment 欄位的資訊當作參數,並且 emit 'status add' 這個事件,然而若 server.js 的 res 為 true的話,則將 status 播送到每個連接上的 sockets(Client端)。


結果

開兩個瀏覽器測試


資料庫現況
最後就成功拉!感覺還滿好玩的,這一次練習就是在釐清 socket.io , event driven , callback 的相關實作。


參考

沒有留言:

張貼留言