我的思路是:
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),黃陂企業(yè)網(wǎng)站建設(shè),黃陂品牌網(wǎng)站建設(shè),網(wǎng)站定制,黃陂網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,黃陂網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
數(shù)據(jù)庫(kù)中新建一個(gè)表
is_showUpdate
字段:id、is_update
記錄 :id=1;is_update = false;
當(dāng)你的程序要修改顯示信息的時(shí)候(也就是展示數(shù)據(jù)),信息修改完畢將is_showUpdate表的記錄標(biāo)記為true
update is_showUpdate set is_update ='true' where id = 1;
展示頁(yè)面通過(guò)js定時(shí)器通過(guò)ajax每五秒調(diào)取下你的接口,接口只是查詢(xún)is_showUpdate 表的id為1的記錄 is_update 是否為true;如果該字段為true,則此接口將id=1的記錄的is_update修改為false,然后給前臺(tái)頁(yè)面反水?dāng)?shù)據(jù),刷新頁(yè)面;
首先你要將電視盒子或者電視機(jī)的ADB打開(kāi),接著在電腦下載個(gè)電視應(yīng)用安裝器或者TV盒子助手,接著輸入電視機(jī)的IP地址后連接成功,點(diǎn)擊推送安裝軟件即可。注:前提電腦和電視機(jī)/盒子必須在同一局域網(wǎng)內(nèi)。
用PHP后端推送消息給客戶(hù)端:
1、自己搭建的話(huà)建立socket長(zhǎng)連接進(jìn)行通訊,可參考框架(workerman)。
2、用開(kāi)源系統(tǒng),參考:極光推送,友盟推送等第三方。
使用以下代碼可以更改設(shè)置。
后端代碼
push.php
?php
use?Workerman\Worker;
require_once?'./Workerman/Autoloader.php';
$worker?=?new?Worker('websocket://0.0.0.0:1234');
//?這里進(jìn)程數(shù)必須設(shè)置為1
$worker-count?=?1;
//?worker進(jìn)程啟動(dòng)后建立一個(gè)內(nèi)部通訊端口
$worker-onWorkerStart?=?function($worker)
{
//?開(kāi)啟一個(gè)內(nèi)部端口,方便內(nèi)部系統(tǒng)推送數(shù)據(jù),Text協(xié)議格式?文本+換行符????$inner_text_worker?=?new?Worker('Text://0.0.0.0:5678');
$inner_text_worker-onMessage?=?function($connection,?$buffer)
{
global?$worker;
//?$data數(shù)組格式,里面有uid,表示向那個(gè)uid的頁(yè)面推送數(shù)據(jù)
$data?=?json_decode($buffer,?true);
$uid?=?$data['uid'];
//?通過(guò)workerman,向uid的頁(yè)面推送數(shù)據(jù)
$ret?=?sendMessageByUid($uid,?$buffer);
//?返回推送結(jié)果
$connection-send($ret???'ok'?:?'fail');
};
$inner_text_worker-listen();
};
//?新增加一個(gè)屬性,用來(lái)保存uid到connection的映射
$worker-uidConnections?=?array();
//?當(dāng)有客戶(hù)端發(fā)來(lái)消息時(shí)執(zhí)行的回調(diào)函數(shù)$worker-onMessage?=?function($connection,?$data)use($worker)
{
//?判斷當(dāng)前客戶(hù)端是否已經(jīng)驗(yàn)證,既是否設(shè)置了uid
if(!isset($connection-uid))
{
//?沒(méi)驗(yàn)證的話(huà)把第一個(gè)包當(dāng)做uid(這里為了方便演示,沒(méi)做真正的驗(yàn)證)
$connection-uid?=?$data;
/*?保存uid到connection的映射,這樣可以方便的通過(guò)uid查找connection,
*?實(shí)現(xiàn)針對(duì)特定uid推送數(shù)據(jù)
*/
$worker-uidConnections[$connection-uid]?=?$connection;
return;
}
};
//?當(dāng)有客戶(hù)端連接斷開(kāi)時(shí)
$worker-onClose?=?function($connection)use($worker)
{
global?$worker;
if(isset($connection-uid))
{
//?連接斷開(kāi)時(shí)刪除映射
unset($worker-uidConnections[$connection-uid]);
}
};
//?向所有驗(yàn)證的用戶(hù)推送數(shù)據(jù)
function?broadcast($message)
{
global?$worker;
foreach($worker-uidConnections?as?$connection)
{
$connection-send($message);
}
}
//?針對(duì)uid推送數(shù)據(jù)
function?sendMessageByUid($uid,?$message)
{
global?$worker;
if(isset($worker-uidConnections[$uid]))
{
$connection?=?$worker-uidConnections[$uid];
$connection-send($message);
return?true;
}
return?false;
}
//?運(yùn)行所有的worker(其實(shí)當(dāng)前只定義了一個(gè))
Worker::runAll();
啟動(dòng)后端服務(wù)
php?push.php?start?-d
前端接收推送的js代碼
var?ws?=?new?WebSocket('ws://127.0.0.1:1234');
ws.onopen?=?function(){
var?uid?=?'uid1';
ws.send(uid);
};
ws.onmessage?=?function(e){
alert(e.data);
};后端推送消息的代碼
//?建立socket連接到內(nèi)部推送端口
$client?=?stream_socket_client('tcp://127.0.0.1:5678',?$errno,?$errmsg,?1,??STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);
//?推送的數(shù)據(jù),包含uid字段,表示是給這個(gè)uid推送
$data?=?array('uid'='uid1',?'percent'='88%');
//?發(fā)送數(shù)據(jù),注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
fwrite($client,?json_encode($data)."\n");
//?讀取推送結(jié)果
echo?fread($client,?8192);這里的uid不一定是用戶(hù)的id,也可以理解為任務(wù)id即 taskid
php實(shí)現(xiàn)ios推送的方法:首先把要發(fā)送的消息以及iPhone標(biāo)識(shí)打包,并發(fā)送給APNS;然后查找有相應(yīng)標(biāo)識(shí)的iPhone,并把消息發(fā)送到iPhone;最后把發(fā)來(lái)的消息傳遞給相應(yīng)的應(yīng)用程序,并且按照設(shè)定彈出Push通知即可。
可以分為三個(gè)階段:
第一階段:應(yīng)用程序把要發(fā)送的消息、目的iPhone的標(biāo)識(shí)打包,發(fā)給APNS。
第二階段:APNS在自身的已注冊(cè)Push服務(wù)的iPhone列表中,查找有相應(yīng)標(biāo)識(shí)的iPhone,并把消息發(fā)送到iPhone。
第三階段:iPhone把發(fā)來(lái)的消息傳遞給相應(yīng)的應(yīng)用程序,并且按照設(shè)定彈出Push通知。
推送服務(wù)極光還不錯(cuò),極光多種消息類(lèi)型,開(kāi)發(fā)者可以輕松地通過(guò)極光發(fā)送各個(gè)移動(dòng)平臺(tái)的系統(tǒng)通知,還可以在控制臺(tái)編輯多種富文本展示模板; 極光還提供自定義消息的透?jìng)?,客?hù)端接到消息內(nèi)容后根據(jù)自己的邏輯自由處理。
百度云推送可以實(shí)現(xiàn)你這種需求,可以指定推給某個(gè)ID,也可以指定推給哪個(gè)組,還可以推給所有人我們用極光推送,客戶(hù)端和服務(wù)端配置的都簡(jiǎn)單,有Demo可直接運(yùn)行的.
demo可以直接運(yùn)行的(有個(gè)main方法測(cè)試的)
不過(guò),如果不是一定要實(shí)時(shí)消息,還是不要用這種第三方的推送服務(wù)器了,畢竟是人家的服務(wù)器
而且推送次數(shù),頻率什么的都有限制,還不如你在移動(dòng)端做輪詢(xún)處理,即1分鐘請(qǐng)求一下服務(wù)器,或者30秒請(qǐng)求一下服務(wù)器,看看有沒(méi)有數(shù)據(jù)什么的.
當(dāng)然也可以自己搭建推送服務(wù)器,xmpp協(xié)議什么的.好復(fù)雜
用極光推送你試試。
更多問(wèn)題到問(wèn)題求助專(zhuān)區(qū)()
當(dāng)前名稱(chēng):大屏php推送數(shù)據(jù) 大屏php推送數(shù)據(jù)失敗
網(wǎng)址分享:http://muchs.cn/article26/hjcejg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、小程序開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)、定制網(wǎng)站、面包屑導(dǎo)航、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容