導航:首頁 > IDC知識 > php手機端推送伺服器

php手機端推送伺服器

發布時間:2020-11-19 23:30:33

1、怎樣使用PHP實現伺服器向APP推送消息

?

2、使用百度雲推送時,PHP服務端如何實現即時推送?

網路雲推送可以復實現你制這種需求,可以指定推給某個ID,也可以指定推給哪個組,還可以推給所有人我們用極光推送,客戶端和服務端配置的都簡單,有Demo可直接運行的.
demo可以直接運行的(有個main方法測試的)
不過,如果不是一定要實時消息,還是不要用這種第三方的推送伺服器了,畢竟是人家的伺服器
而且推送次數,頻率什麼的都有限制,還不如你在移動端做輪詢處理,即1分鍾請求一下伺服器,或者30秒請求一下伺服器,看看有沒有數據什麼的.
當然也可以自己搭建推送伺服器,xmpp協議什麼的.好復雜
用極光推送你試試。
更多問題到問題求助專區(http://bbs.hounwang.com/)

3、php如何實現伺服器推送技術,即時把信的數據發送到客戶端。

主要有三種方案
第一種是利用第三方的API來實現信息推送,主要包括環信、百度雲推送、leancloud等
第二種通過javascript的setTimeout或者setInterval來實現,同理PHP端也可以用守護進程來實現
第三種通過Linux的計劃任務來實時推送需要消息

4、如何在php後端及時推送消息給客戶端

<?php
use Workerman\Worker;
require_once './Workerman/Autoloader.php';
// 初始化一個worker容器,監聽1234埠
$worker = new Worker('websocket://0.0.0.0:1234');
// 這里進程數必須設置為1
$worker->count = 1;
// worker進程啟動後建立一個內部通訊埠
$worker->onWorkerStart = function($worker)
{
// 開啟一個內部埠,方便內部系統推送數據,Text協議格式 文本+換行符
$inner_text_worker = new Worker('Text://0.0.0.0:5678');
$inner_text_worker->onMessage = function($connection, $buffer)
{
global $worker;
// $data數組格式,裡面有uid,表示向那個uid的頁面推送數據
$data = json_decode($buffer, true);
$uid = $data['uid'];
// 通過workerman,向uid的頁面推送數據
$ret = sendMessageByUid($uid, $buffer);
// 返回推送結果
$connection->send($ret ? 'ok' : 'fail');
};
$inner_text_worker->listen();
};
// 新增加一個屬性,用來保存uid到connection的映射
$worker->uidConnections = array();
// 當有客戶端發來消息時執行的回調函數
$worker->onMessage = function($connection, $data)use($worker)
{
// 判斷當前客戶端是否已經驗證,既是否設置了uid
if(!isset($connection->uid))
{
// 沒驗證的話把第一個包當做uid(這里為了方便演示,沒做真正的驗證)
$connection->uid = $data;
/* 保存uid到connection的映射,這樣可以方便的通過uid查找connection,
* 實現針對特定uid推送數據
*/
$worker->uidConnections[$connection->uid] = $connection;
return;
}
};

// 當有客戶端連接斷開時
$worker->onClose = function($connection)use($worker)
{
global $worker;
if(isset($connection->uid))
{
// 連接斷開時刪除映射
unset($worker->uidConnections[$connection->uid]);
}
};

// 向所有驗證的用戶推送數據
function broadcast($message)
{
global $worker;
foreach($worker->uidConnections as $connection)
{
$connection->send($message);
}
}

// 針對uid推送數據
function sendMessageByUid($uid, $message)
{
global $worker;
if(isset($worker->uidConnections[$uid]))
{
$connection = $worker->uidConnections[$uid];
$connection->send($message);
return true;
}
return false;
}

// 運行所有的worker(其實當前只定義了一個)
Worker::runAll();

啟動後端服務
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連接到內部推送埠
$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT);
// 推送的數據,包含uid欄位,表示是給這個uid推送
$data = array('uid'=>'uid1', 'percent'=>'88%');
// 發送數據,注意5678埠是Text協議的埠,Text協議需要在數據末尾加上換行符
fwrite($client, json_encode($data)."\n");
// 讀取推送結果
echo fread($client, 8192);

這里的uid不一定是用戶的id,也可以理解為任務id即 taskid

以上代碼親測可以直接使用

5、如何在php後端及時推送消息給客戶端?

使用以下代碼可以更改設置。

6、php,怎麼從伺服器端向客戶端主動發信息

APP客戶端建立監聽,每個一段時間去請求服務端的數據

服務端根據手機設備推送信息,如極光推送

7、如何實現伺服器給android客戶端主動推送消息

一、消息推送基礎
消息推送,就是在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。推送技術通過自動傳送信息給用戶,來減少用於網路上搜索的時間。它根據用戶的興趣來搜索、過濾信息,並將其定期推給用戶,幫助用戶高效率地發掘有價值的信息
當我們開發需要和伺服器交互的移動應用時,基本上都需要和伺服器進行交互,包括上傳數據到伺服器,同時從伺服器上獲取數據。
一般情況下,客戶端與伺服器之間通訊客戶端是主動的,但這就存在一個問題就是一旦伺服器數據有更新或者伺服器要下發通知給客戶端只能等客戶端連接的時候才能實現。這種方式使消息失去了實時性。
如何使客戶端能夠實時的收到伺服器的消息和通知,總體來說有兩種方式,第一種是客戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上獲取一下信息,看是否有更新的信息出現。第二種就是 伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。 
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費客戶端的網路流量,更主要的是費電量,還需要我們的程序不停地去監測服務端的變化。  
二、幾種常見的解決方案實現原理
1)輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2)SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3)持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
三、消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
B、MQTT協議實現Android推送
採用MQTT協議實現Android推送功能也是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
wmqtt.jar 是IBM提供的MQTT協議的實現。我們可以從這里(https://github.com/toku/AndroidPushNotificationsDemo)下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現(https://github.com/toku/PhpMQTTClient)。
C、RSMB實現推送功能
Really Small Message Broker (RSMB) ,是一個簡單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。SAM是一個針對MQTT寫的PHP庫。我們可以從這個http://pecl.php.net/package/sam/download/0.2.0地址下載它.
D、XMPP協議實現Android推送
Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。
androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。但也存在一些不足之處:
1) 比如時間過長時,就再也收不到推送的信息了。
2)性能上也不夠穩定。
3)如果將消息從伺服器上推送出去,就不再管理了,不管消息是否成功到達客戶端手機上。
如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
E、使用第三方平台
目前國內、國外有一些推送平台可供使用,但是涉及到收費問題、保密問題、服務質量問題、擴展問題等等,又不得不是我們望而卻步。
四、消息推送完美方案
綜合以上論述,在建立Android消息推送方面可謂方案多多,但每一款方案都有其優缺點。但無論如何,還是自己搭建一個推送平台是上策。因為你有、他有不如自己有。
舉個例子,在搭建自有推送平台上建議使用《某某Android消息推送組件》。該組不僅可以拿來即用,並且還可以提供源碼以便擴展,實現自己的特殊需求。
A、推送原理
Android消息推送組件基於XMPP協議實現Android推送。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。

8、怎麼實現php向android app推送信息

這主要是app方面要做的事情 php只需要寫一個發布消息的介面就行

9、各位大神,怎樣讓手機客戶端能快速連接到推送伺服器

一、消息推送基礎
消息推送,就是在互聯網上通過定期傳送用戶需要的信息來減少信息過載的一項新技術。推送技術通過自動傳送信息給用戶,來減少用於網路上搜索的時間。它根據用戶的興趣來搜索、過濾信息,並將其定期推給用戶,幫助用戶高效率地發掘有價值的信息
當我們開發需要和伺服器交互的移動應用時,基本上都需要和伺服器進行交互,包括上傳數據到伺服器,同時從伺服器上獲取數據。
一般情況下,客戶端與伺服器之間通訊客戶端是主動的,但這就存在一個問題就是一旦伺服器數據有更新或者伺服器要下發通知給客戶端只能等客戶端連接的時候才能實現。這種方式使消息失去了實時性。
如何使客戶端能夠實時的收到伺服器的消息和通知,總體來說有兩種方式,第一種是客戶端使用Pull(拉)的方式,就是隔一段時間就去伺服器上獲取一下信息,看是否有更新的信息出現。第二種就是 伺服器使用Push(推送)的方式,當伺服器端有新信息了,則把最新的信息Push到客戶端上。這樣,客戶端就能自動的接收到消息。 
雖然Pull和Push兩種方式都能實現獲取伺服器端更新信息的功能,但是明顯來說Push方式比Pull方式更優越。因為Pull方式更費客戶端的網路流量,更主要的是費電量,還需要我們的程序不停地去監測服務端的變化。  
二、幾種常見的解決方案實現原理
1)輪詢(Pull)方式:客戶端定時向伺服器發送詢問消息,一旦伺服器有變化則立即同步消息。
2)SMS(Push)方式:通過攔截SMS消息並且解析消息內容來了解伺服器的命令,但這種方式一般用戶在經濟上很難承受。
3)持久連接(Push)方式:客戶端和伺服器之間建立長久連接,這樣就可以實現消息的及時行和實時性。
三、消息推送解決方案概述
A、C2DM雲端推送方案
在Android手機平台上,Google提供了C2DM(Cloudto Device Messaging)服務。Android Cloud to Device Messaging (C2DM)是一個用來幫助開發者從伺服器向Android應用程序發送數據的服務。該服務提供了一個簡單的、輕量級的機制,允許伺服器可以通知移動應用程序直接與伺服器進行通信,以便於從伺服器獲取應用程序更新和用戶數據。
該方案存在的主要問題是C2DM需要依賴於Google官方提供的C2DM伺服器,由於國內的網路環境,這個服務經常不可用。
B、MQTT協議實現Android推送
採用MQTT協議實現Android推送功能也是一種解決方案。MQTT是一個輕量級的消息發布/訂閱協議,它是實現基於手機客戶端的消息推送伺服器的理想解決方案。
wmqtt.jar 是IBM提供的MQTT協議的實現。我們可以從這里(https://github.com/toku/AndroidPushNotificationsDemo)下載該項目的實例代碼,並且可以找到一個採用PHP書寫的伺服器端實現(https://github.com/toku/PhpMQTTClient)。
C、RSMB實現推送功能
Really Small Message Broker (RSMB) ,是一個簡單的MQTT代理,同樣由IBM提供,其查看地址是:http://www.alphaworks.ibm.com/tech/rsmb。預設打開1883埠,應用程序當中,它負責接收來自伺服器的消息並將其轉發給指定的移動設備。SAM是一個針對MQTT寫的PHP庫。我們可以從這個http://pecl.php.net/package/sam/download/0.2.0地址下載它.
D、XMPP協議實現Android推送
Google官方的C2DM伺服器底層也是採用XMPP協議進行的封裝。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。
androidpn是一個基於XMPP協議的java開源Android push notification實現。它包含了完整的客戶端和伺服器端。但也存在一些不足之處:
1) 比如時間過長時,就再也收不到推送的信息了。
2)性能上也不夠穩定。
3)如果將消息從伺服器上推送出去,就不再管理了,不管消息是否成功到達客戶端手機上。
如果我們要使用androidpn,則還需要做大量的工作,需要理解XMPP協議、理解Androidpn的實現機制,需要調試內部存在的BUG。
E、使用第三方平台
目前國內、國外有一些推送平台可供使用,但是涉及到收費問題、保密問題、服務質量問題、擴展問題等等,又不得不是我們望而卻步。
四、消息推送完美方案
綜合以上論述,在建立Android消息推送方面可謂方案多多,但每一款方案都有其優缺點。但無論如何,還是自己搭建一個推送平台是上策。因為你有、他有不如自己有。
舉個例子,在搭建自有推送平台上建議使用《某某Android消息推送組件》。該組不僅可以拿來即用,並且還可以提供源碼以便擴展,實現自己的特殊需求。
A、推送原理
Android消息推送組件基於XMPP協議實現Android推送。XMPP(可擴展通訊和表示協議)是基於可擴展標記語言(XML)的協議,它用於即時消息(IM)以及在線探測。這個協議可能最終允許網際網路用戶向網際網路上的其他任何人發送即時消息。

10、php怎麼實現實時推送呢

百度雲推送可以實現你這種需求,可以指定推給某個ID,也可以指定推給哪版個組,還可以推給所有人權我們用極光推送,客戶端和服務端配置的都簡單,有Demo可直接運行的.
demo可以直接運行的(有個main方法測試的)
不過,如果不是一定要實時消息,還是不要用這種第三方的推送伺服器了,畢竟是人家的伺服器
而且推送次數,頻率什麼的都有限制,還不如你在移動端做輪詢處理,即1分鍾請求一下伺服器,或者30秒請求一下伺服器,看看有沒有數據什麼的.
當然也可以自己搭建推送伺服器,xmpp協議什麼的.好復雜
用極光推送你試試。
更多問題到問題求助專區(http://bbs.hounwang.com/)

與php手機端推送伺服器相關的知識