一個基於WebSocket的WEB訊息推送架構
web-msg-sender是一款web長串連推送架構,採用PHPSocket.IO開發,基於WebSocket長串連通訊,如果瀏覽器不支援WebSocket則自動轉用comet推送。 通過後台推送訊息,訊息可以即時推送到用戶端,非輪詢,即時性非常好,效能很高。
特點:
多瀏覽器支援
支援針對單個使用者推送訊息
支援向所有使用者推送訊息
長串連推送(websocket或者comet),訊息即時到達
支援線上使用者數即時統計展示
支援線上頁面數即時統計展示
支援跨域推送
下載
https://github.com/walkor/web-msg-sender
WEB訊息推送架構
接收訊息頁面:http://www.workerman.net:2123/
推送介面url:http://www.workerman.net:2121/?type=publish&to=uid&content=content
其中to為接收訊息的uid,如果傳空則向所有人推送訊息 content 為訊息內容
Linux環境安裝啟動
1、下載web-msg-sender,並解壓縮到任意目錄
2、啟動workermanphp start.php start -d如
3、瀏覽器訪問連接埠http://ip:2123或者http://網域名稱:2123,例如 http://workerman.net:2123(如果無法訪問請檢查伺服器防火牆)
前端測試:
支援跨域推送,開發人員可以不用建立服務端,直接使用線上的推送服務測試,只要引入js檔案並設定下連接埠及回調即可,例如在任意網站中加入如下代碼即可收到訊息並統計資料:
<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script><script> // 串連服務端 var socket = io('http://workerman.net:2120'); // uid可以是自己網站的使用者id,以便針對uid推送以及統計線上人數 uid = 123; // socket串連後以uid登入 socket.on('connect', function(){ socket.emit('login', uid); }); // 後端推送來訊息時 socket.on('new_msg', function(msg){ console.log("收到訊息:"+msg); }); // 後端推送來線上資料時 socket.on('update_online_count', function(online_stat){ console.log(online_stat); });</script>
後端調用api向任意使用者推送:
<?php// 指明給誰推送,為空白表示向所有線上使用者推送$to_uid = "";// 推送的url地址,上線時改成自己的伺服器位址$push_api_url = "http://workerman.net:2121/";$post_data = array( "type" => "publish", "content" => "這個是推送的測試資料", "to" => $to_uid, );$ch = curl_init ();curl_setopt ( $ch, CURLOPT_URL, $push_api_url );curl_setopt ( $ch, CURLOPT_POST, 1 );curl_setopt ( $ch, CURLOPT_HEADER, 0 );curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );$return = curl_exec ( $ch );curl_close ( $ch );var_export($return);
相關文章:
開發訊息推送實現技巧(附代碼)
.NET 開發自動內容回複執行個體代碼
在Java中通過websocket實現訊息推送的實現代碼詳解