https://beltxman.com/1885.htmlphp
PHPSocket.IO
的官方介紹:css
PHPSocket.IO是PHP版本的Socket.IO服務端實現,基於workerman開發,用於替換node.js版本Socket.IO服務端。PHPSocket.IO底層採用websocket協議通信,若是客戶端不支持websocket協議, 則會自動採用http長輪詢的方式通信。PHPSocket.IO實現的Polling通訊機制包括Adobe Flash Socket、AJAX長輪詢、JSONP輪詢等。具體採用哪一種機制通信對於開發者徹底透明, 開發者使用的是統一的接口。html
項目github
地址https://github.com/hsu1943/thinksocketio,項目已經作了不少更新,請按照項目readme
使用。
下面咱們使用ThinkPHP5.1
框架來整合PHPSocket.IO
實現客戶端和服務端的通信。node
使用的本地開發環境是PHP5.6.30
+ Apache2.4.25
jquery
建立新項目
這樣你的安裝工做就作好了。接下來配置須要的模git
配置模塊
結合前陣子的文章:ThinkPHP 5.1自動生成模塊及目錄、文件
咱們編輯好build.php
文件:github
而後運行web
這樣就有了socketio模塊下面controller
有Index.php
和Server.php
兩個控制器和view
下一個index/index
一個視圖。sql
建立服務端
編輯控制器Server.php
爲(具體參考註釋):thinkphp
爲了測試,在數據庫新建了一張表msg
用來存儲客戶端發送過來的消息。
這樣一個能夠返回鏈接成功消息、接收消息、回覆消息、存儲消息的簡單服務端就作好了。
建立客戶端
咱們在Index.php
控制器中這樣寫:
在對應的模版文件view/index/index.html
中代碼:
到這裏,一個具有鏈接服務端,發送消息,接受並輸出消息到控制檯的簡單websocket
客戶端就建好了。
爲服務端綁定入口文件
在項目的public
文件夾下新建一個入口文件server.php
並將其綁定到socketio
模塊的Server
控制器index
方法;
入口文件server.php
代碼:
測試通信
運行服務端
直接運行項目public
目錄下的server.php
;
這個輸出表示PHPSocketIO
已經成功在2021
端口運行監聽中。
咱們打開瀏覽器打開http://localhost/thinksocket/public/index.php/socketio/
頁面;
能夠看到頁面會彈出‘連接成功’,同時能夠看到服務端cmd
終端上打印出new connection
,同事瀏覽器控制檯會輸出connect success
,表明已經成功與服務端鏈接上。
測試發送消息
在頁面輸入框內輸入任意信息,服務端cmd
終端將會打印信息,表明服務端收到信息,而後服務端控制檯將會輸出‘收到’+發送的信息。
至此,咱們的測試完成。
舒適提示:對程序修改後須要從新啓動服務端才能生效
以上只是簡單的利用ThinkPHP5.1
的框架測試PHPSocket.IO
通信。
源代碼地址:https://github.com/hsu1943/thinksocketio
供你們參考。
update (代碼以Github爲準)
- 2019/01/22:
Github
項目代碼已經更新,加入了用戶惟一表示記錄以及向指定用戶推送消息。詳情看:ThinkPHP 5.1+PHPSocket.IO實現websocket搭建聊天室+私聊 - 2019-06-19 增長在線人數統計,在線用戶列表,修改暱稱,添加系統主動推送接口(廣播或私信);