https://beltxman.com/1885.html
PHPSocket.IO的官方介紹:
PHPSocket.IO是PHP版本的Socket.IO服務端實現,基於workerman開發,用於替換node.js版本Socket.IO服務端。PHPSocket.IO底層采用websocket協議通訊,如果客戶端不支持websocket協議, 則會自動采用http長輪詢的方式通訊。PHPSocket.IO實現的Polling通信機制包括Adobe Flash Socket、AJAX長輪詢、JSONP輪詢等。具體采用哪種機制通訊對於開發者完全透明, 開發者使用的是統一的接口。
項目github地址https://github.com/hsu1943/thinksocketio,項目已經做了很多更新,請按照項目readme使用。
下面我們使用ThinkPHP5.1框架來整合PHPSocket.IO實現客戶端和服務端的通訊。
使用的本地開發環境是PHP5.6.30 + Apache2.4.25
創建新項目
這樣你的安裝工作就做好了。接下來配置需要的模
配置模塊
結合前陣子的文章:ThinkPHP 5.1自動生成模塊及目錄、文件
我們編輯好build.php文件:
然后運行
這樣就有了socketio模塊下面controller有Index.php和Server.php兩個控制器和view下一個index/index一個視圖。
創建服務端
編輯控制器Server.php為(具體參考注釋):
為了測試,在數據庫新建了一張表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 增加在線人數統計,在線用戶列表,修改昵稱,添加系統主動推送接口(廣播或私信);
