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


參考

NodeJs - 事件導向之特色

簡介

NodeJs 相當擅長於在事件的掌控,而在眾多實作當中,我們很常看到某個事件觸發另一事件,然而這就涉及到了 Listener 以及 Emitter 的角色關係。

2015年5月9日 星期六

在 Mac OS X 10.10 上安裝 PHP 套件管理 Composer

先前在  利用 Kudu 協助在 Azure Website 上使用 Composer 安裝 Azure SDK for PHP 有提到 Composer 的相關概念,有興趣可以回去看第一段。

網路上其實有許多高手對於安裝 Composer 有許多方法,然而此篇是寫來做個筆記,因為覺得這個方法不錯,還可以節省往後打指令時間,因此特別撰寫出來。

步驟一:先把 Composer.phar 下載下來,可以在 terminal 透過下列簡單的指令,選擇任一目錄皆可。

curl -sS https://getcomposer.org/installer | php

步驟二:我們都希望在 globally 的在 terminal 使用 composer 這指令,因此我們可以把 composer.phar 移入 /usr/bin/,並且修改 .bash_profile

sudo mv composer.phar /usr/bin/
vim ~/.bash_profile

步驟三:打開 .bash_profile 後在裡頭加個 composer 的 alias

alias composer="php /usr/bin/composer.phar"

步驟四:就是簡單順利的使用 composer 這個指令囉,若您按照以上步驟安裝,即可少打很多 php composer.phar 的前綴,而 composer 指令可以在官方文件找到。

參考