php socket主动推送消息,PHP使用WebSocket主动推送【微信小程序接收】
WebSocket.jpeg
Websocket是一種服務端和客戶端可以持久連接的通信協議,我們可以利用WebSocket的特性實現服務器主動向客戶端推送消息的功能。
這里我們用TP5.1框架結合Workerman來做演示
首先用Composer下載TP5.1框架composer?create-project?topthink/think=5.1.*?tp5??--prefer-dist
下載完成后再在項目目錄下通過 ?composer ?引入 ?workermancomposer?require?topthink/think-worker
等完成后就可以在 vendor 目錄里看到 ?workerman注意:本人環境CentOS7,TP5.1框架,PHP版本5.6.0
然后在項目的根目錄下新建一個 ?start.php 文件,用于啟動WebSocket服務。<?phpuse ?Workerman\Worker;require_once?__DIR__?.?'/vendor/workerman/workerman/Autoloader.php';//?創建一個Worker監聽2345端口,使用websocket協議通訊$http_worker?=?new?Worker("websocket://0.0.0.0:2345");//?這里進程數必須設置為1$http_worker->count?=?1;//?接收到瀏覽器發送的數據時廣播給所有用戶$http_worker->onMessage?=?function($connection,?$data)use($http_worker){????//?向每一個用戶推送消息
foreach($http_worker->connections?as?$connection)
{????????//驗證管理端秘鑰
$text?=?explode("KEY:",?$data);????????if($text[1]=='gi4lXpAOw6ddtFg'){
$connection->send($text[0]);
}
}
};
Worker::runAll();
在根目錄下打開命令行工具以daemon(守護進程)方式啟動php?start.php?start?-d
下面是管理端廣播消息頁面的一張截圖
WX20180821-144140.png
管理端js代碼如下
var?ws?=?new?WebSocket("ws://47.94.222.65:2345");
ws.onopen?=?function(evt)?{????console.log("連接成功");
};
$('#send').click(function(){?????var?text?=?$('#text').val()?+?'KEY:gi4lXpAOw6ddtFg';
ws.send(text);
});
微信小程序端接收推送演示
WX20180821-155230.png
微信小程序端代碼wx.connectSocket({???url:?'ws://47.94.222.65:2345'})
wx.onSocketOpen(function?(res)?{???console.log('WebSocket連接已打開!')
})
wx.onSocketMessage(function?(res)?{???console.log('收到服務器內容:'?+?res.data)
})
作者:IT青年
鏈接:https://www.jianshu.com/p/67c320d19814
總結
以上是生活随笔為你收集整理的php socket主动推送消息,PHP使用WebSocket主动推送【微信小程序接收】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中的switch的规则_细细讲述
- 下一篇: php读取模板生成静态功能,php 生成