這一個練習是延續上一篇
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 的用法:
- io.sockets.emit:觸發所有 sockets(Client端)。
- io.sockets.on:等待所有進入的 sockets(Client端)。
- socket.emit:與 socket.on 相搭配,為event driven之用法,但對像為單一特定 socket。
- 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 的相關實作。
參考
沒有留言:
張貼留言