使用Swoole中的WebSocket快速實現彈幕效果
阿新 • • 發佈:2019-02-18
WebSocket協議是基於TCP的一種新的網路協議。它實現了瀏覽器與伺服器全雙工(full-duplex)通訊——允許伺服器主動傳送資訊給客戶端。
具體詳細瞭解WebSocket可以檢視:WebSocket 是什麼原理?為什麼可以實現持久連線?
言歸正傳,首先編譯安裝Swoole擴充套件,並建立WebSocket伺服器。
接下來,如果是單純想學習WebSocket的使用方式的話,可以使用DanmuPlayer專案的原始碼,是一款Html5彈幕視訊播放器外掛,也可以執行寫一個彈幕外掛。我比較懶,直接使用了現成的外掛,按照文件配置好後,可以在本地單機使用彈幕效果了。
由於此次是單純簡單入門Swoole,並沒有做複雜的程式碼封裝。
-
直接在DanmuPlayer下,demo資料夾中,建立ws_server.php檔案,程式碼如下:
-
開啟index.html檔案,在對應位置加入呼叫WebSocket的JS程式碼,同時,可以不呼叫資料庫寫入和獲取的程式碼,程式碼如下:
-
開啟src資料夾下js資料夾中的main.js,找到sendDanmu的函式定義,註釋掉原始碼中的addDanmu呼叫,修改為websocket.send()方法,將對應的彈幕Json通過websocket傳遞,程式碼如下:
-
接下來,就可以執行WebSocket並記錄到log.txt檔案了。
nmw@nmw /w/w/D/demo> nohup php5.6 ws_server.php > log.txt &
以上,便是簡要WebSocket實現彈幕的整體程式碼。瀏覽器通過 JavaScript 向伺服器發出建立 WebSocket 連線的請求,連線建立以後,客戶端和伺服器端就可以通過 TCP 連線直接交換資料。