socket.io框架學習

socket.io框架是用於網頁中實時通訊,通常用於開發聊天室等實時性較強的系統模塊javascript

一開始從官網http://socket.io/上down了一個demo下來,這個demo裏面只有基本的收發消息的功能,而後我在這個基礎上加上了用戶設置暱稱、私信用戶、上線下線及當前在線人數提醒功能java

github地址:https://github.com/FujiBilly/SocketIO.gitnode

爲了更方便的調試代碼,決定在如今的基礎上添加gulp構建工具的輔助功能git

主要是gulp-livereload和gulp-nodemon這兩個功能,其中gulp-livereload主要是當文件發生改動時對網頁進行刷新,gulp-nodemon主要是當文件發生改動時從新啓動服務端,即分別對先後端進行重啓。github

gulp-livereloadweb

爲配合gulp-livereload功能的實現,需先在瀏覽器中 安裝LiveReload拓展程序 和 在Sublime Text中安裝LiveReload包:chrome

瀏覽器主要指Chorme瀏覽器,LiveReload拓展程序可在https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei上獲取。
Sublime Text中,先用快捷鍵Ctrl+Shift+P,輸入List Packages,查看已安裝的外包清單,若無則安裝LiveReload包,安裝完成以後還LiveReload服務還未啓動,需用快捷鍵Ctrl+Shift+P,出現「LiveReload:Enable/disable plugins」,按回車鍵,而後在下拉列表中找到「Enable - Simple Reload」,繼續按回車鍵便可啓動,且每次開啓Sublime Text都要啓動一次LiveReload服務。gulp

gulp-nodemon後端

nodemon命令能夠直接在終端下像node命令那樣使用,而我是在gulpfile.js文件中使用nodemon的,代碼以下瀏覽器

nodemon({
        script: 'index.js'
    });

至關於終端下的 nodemon index.js 命令

注意:在安裝使用gulp-nodemon的時候遇到一個大坑,如果你全局安裝了nodemon後,你在項目文件夾中會發現nodemon失效了,這是由於全局安裝了nodemon後它只是監視全局路徑下文件的改動,而不是你項目文件夾中的文件改動,因此不當心全局安裝了nodemon以後能夠在/usr/local/lib/node_modules/nodemon/下把該文件夾刪除,還有/usr/local/bin/nodemon文件也一併刪掉。但有時候仍是不行,會出現[nodemon] Internal watch failed: watch (your watching path) ENOSPC這種錯誤,最後才醒悟,Linux監視文件的改動須要有權限,因此在啓動命令以前加上sudo便可。

以後以爲單單的幾個文件使得結構不太清晰,因此在原來功能的基礎上整合了Express框架!!!

整合的時候有幾個要注意的地方:

/socket.io/socket.io.js 在ejs中會引用到這個文件,而這個文件是存放在node_modules/socket.io-client/socket.io.js這裏的,因此須要將其copy到public目錄下;配置 gulpfile.js 時,nodemon模塊所用的啓動命令應該是 node ./bin/www 而不是 node app.js ;因爲socket.io建立對象時須要一個服務做爲參數,而這個服務正是 /bin/www 中的 var server = http.createServer(app),因此將io服務端的監聽和廣播放在該文件中;/bin/www是不能像其餘js文件用 module.exports 方式將對象公開出來的,因此獲取在線用戶的路由只能放到該文件下才能獲取到名單列表對象;

相關文章
相關標籤/搜索