顯示具有 MySQL 標籤的文章。 顯示所有文章
顯示具有 MySQL 標籤的文章。 顯示所有文章

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 的相關實作。


參考

2014年8月22日 星期五

MySQL使用Spatial point type計算點與點間的距離

因為目前專案需要做有關LBS的運用,故尋找了一下Mysql儲存地理資訊(Location Based Data)的資料型態與函式,方法如下: 假使有一張Table稱spatialTable,有兩個資料欄位分別為placeName、geoPoint。