最近也是比較忙,公司打碼,回家繼續打,越忙越折騰! 一個不當心半夜一點了,花了一夜時間終於把這個分組聊天室寫完了,前兩天剛把fooking的websocket協議加上,純lua實現。
php
fooking的項目地址:http://git.oschina.net/scgywx/fookingcss
在線demo地址: http://182.254.135.131/chat/ html
開發聊天室這基本是上每一個搞socket長鏈接的一個通例了,主要是實現起來簡單,能使用最少的代碼實現客戶端與服務端持久通訊,那麼此次也不例外,仍是拿聊天室說事,不過此次要"高級"一點,能分組,而不是發個消息就廣播給全部人。當某個用戶向指定組發送數據時,只有在此分組的用戶才能收到消息,別的分組不會收到消息。固然這裏的分組是利用了fooking的一個組播機制,把N個客戶端加入到一個分組(組名能夠是任意字符串),發消息的時候只須要指定組名便可(其實也就是存儲一個列表,而後遍歷發送,只是這一步由fooking完成)。
git
聊天室的界面大概就是以下這樣子,左邊是用戶列表,右上方是頻道列表(能夠選擇),下面是消息列表,當選擇一個你沒有加入過的頻道將會彈出「加入此頻道「的按鈕,點擊就能加入該頻道了,剩下的就是聊天了,大體功能就是這樣子。web
這樣一個聊天室程序,只須要不到100行php和不到200行html/css/js,其配置也很是簡單,以下步驟:redis
一、啓動router, 修改項目src目錄下的router.lua配置文件(好比:端口,日誌等),而後執行:./fooking router.luawebsocket
二、啓動gateway, 修改項目src目錄下的config.lua配置文件(好比:端口,router端口,script, php程序路徑等,最主要是FASTCGI_ROOT), 而後執行: ./fooking config.lua socket
注意: 在config.lua裏面配置了script.lua(用於處理打包和解包),在修改config.lua的時候請注意script.lua的路徑php-fpm
script.lua裏面使用了websocket協議,他須要依賴另外一個Sha1.lua文件(在src目錄就有),請注意必定要把script.lua與Sha1.lua放在同一目錄,否則可能會報錯lua
三、 安裝php-fpm、redis、redis擴展
四、修改example/chat/index.html文件裏面websocket的IP和端口(查找ws://就能找到)