php實時消息推送功能


1、做實時消息推送的方式大概有前端輪詢、長連接等方式,前端輪詢的話對服務器壓力會很大,所以采用長連接的方式

2、安裝啟動workerman,下載地址https://www.workerman.net/download/web-msg-sender.zip,啟動:linux系統cd到到框架目錄里運行php start.php start -d。windows系統進入到框架目錄里雙擊start_for_win.bat文件啟動。

3、啟動成功后在瀏覽器輸入http://localhost:2123/可以看到一個demo界面

 

 4、再在瀏覽器地址上輸入http://localhost:2121?type=publish&to=1604023861000&content=你在干嘛,向uid為1604023861000發送“你在干嘛”的消息,

前端代碼:

<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
<script>
     // 連接服務端,workerman.net:2120換成實際部署web-msg-sender服務的域名或者ip
     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>

后端代碼

<?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 );
curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
$return = curl_exec ( $ch );
curl_close ( $ch );
var_export($return);

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM