WorkerMan的推送 新增到YII2
在根目錄下新建Worker目錄
進入新建的Worker資料夾
執行
LINUX下執行 composer require workerman/workerman
win 下執行 composer require workerman/workerman-for-win
Worker資料夾 下新建檔案push.php
<?php
//require_once DIR .'/vendor/autoload.php';
require_once DIR .'/vendor/workerman/workerman/Autoloader.php';
// require_once DIR .'/vendor/workerman/workerman-for-win/Autoloader.php'; WIN下的引用
use Workerman\Worker;
//
// 初始化一個worker容器,監聽1234埠
$worker = new Worker('websocket://192.168.85.128:1234');
// 這裡程序數必須設定為1
$worker->count = 1;
// worker程序啟動後建立一個內部通訊埠
$worker->onWorkerStart = function($worker)
{
// 開啟一個內部埠,方便內部系統推送資料,Text協議格式 文字+換行符
$inner_text_worker = new Worker('Text://192.168.85.128: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();
http://www.yiichina.com/extension/1206
相關推薦
WorkerMan的推送 新增到YII2
在根目錄下新建Worker目錄 進入新建的Worker資料夾 執行 LINUX下執行 composer require workerman/workerman win 下執行 composer require workerman/workerman-for-win Work
【Git】常用命令commit提交,push推送,merge,新增分支branch
1.常用操作: 1.新增跟蹤檔案 git add . 或 git add -A 根據ignore的配置,新增跟蹤檔案,其中的.或-A表示新增所有更改過的檔案。 2.檢視狀態 git status 3.提交到本地: git commit -m "說明"
【轉 】workerman 實現訊息推送
WEB訊息推送框架 web-msg-sender是一款web長連線推送框架,採用PHPSocket.IO開發,基於WebSocket長連線通訊,如果瀏覽器不支援WebSocket則自動轉用comet推送。 通過後臺推送訊息,訊息可以即時推送到客戶端,非輪詢
基於workerman的叢集推送例子
本文轉自:http://doc3.workerman.net/component/channel-examples.html 例子1 (要求Workerman版本>=3.3.0) 基於Worker的多程序(分散式叢集)推送系統 start.php <?php
使用workerman進行訊息推送
Workerman是一款純PHP開發的開源高效能的PHP socket 伺服器框架。被廣泛的用於手機app、移動通訊,微信小程式,手遊服務端、網路遊戲、PHP聊天室、硬體通訊、智慧家居、車聯網、物聯網等領域的開發。 支援TCP長連線,支援Websocket、HT
Fork原專案新增分支的同步和推送
在 Github 或者 Gitlab Fork 專案以後,原專案增加了新的分支,我們可以通過以下流程將分支同步下來 本專案前提假設我們設定了 remote 的名稱為 up 與源專案關聯. $ git remote -v origin [email&
Workerman之WEB訊息推送框架使用筆記【一】
伺服器使用的時候需要注意雲盾和360埠攔截 下載解壓到任意目錄 cd到目錄下執行 start.php linux :php start.php start -d win:直接執行start_
workerman 從伺服器端向用戶端推送訊息程式碼
資料推送 <?php $client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1); // 推送的資料,包含使用者,表示是給這個使用者推送 $data = array('uid'
自定義推送聲音需要如何新增到APP才會響?
之前做的專案,現在需要新增新的功能,推送是響自定義聲音,由於用的是mqtt做的推送,所以在專案中使用本地推送來模擬推送的效果。 以前用極光推送時,直接將檔案新增到專案中,通過解析到內容來響不同自定義聲音。這次按照之前的做法做了,但是測試時發現不響le,反覆查詢沒有找到問題,
Notification API,為你的網頁新增桌面通知推送
Notification 是什麼 MDN: Notifications API 的 Notification 介面用於配置和向用戶顯示桌面通知。這些通知的外觀和特定功能因平臺而異,但通常它們提供了一種向用戶非同步提供資訊的方式。 其實,MDN 的說明已經可以讓我們很清楚知道 Notification 的
為Github倉庫新增Github Actions實現持續整合: Android apk自動編譯釋出以及github pages同步推送coding.net
> 內容轉載自[我的部落格](https://blog.whuzfb.cn/blog/2020/08/09/github_actions/) [TOC] ## 說明 對於普通的github倉庫,只需要在根目錄建立`.github/workflows/`資料夾即可自動使用Actions功能,具體執行的操
C# 推送模板
doc -1 ges cnblogs images title src target 個推 C#推送模板、安卓個推、消息推送 http://docs.getui.com/server/csharp/template/ C# 推送模板
消息推送二 之webSocket
還需 由於 else har 頁面 try window class logs 友情提示: 消息推送的介紹可以參考http://www.cnblogs.com/dahuandan/p/6816173.html 什麽是webSocket webSocket是為解決客
極光推送---安卓Demo
ges 網絡 同名 roi sta 復制 ava tro return 對於一個一直幹.net的程序媛來說。冷不丁的讓小編幹安卓,那種感覺就好似小狗狗咬小刺猬一樣,不知道從哪兒開始下手,對於小編來說。既是挑戰更是機遇,由於知識都是相通的。再者來說,在小編的
基於netty-socketio的web推送服務
hub href 相關 發生 推送消息 數據 特定 使用 github 在WEB項目中,服務器向WEB頁面推送消息是一種常見的業務需求。PC端的推送技術可以使用socket建立一個長連接來實現。傳統的web服務都是客戶端發出請求,服務端給出響應。但是現在直觀的要求是允許
Git總結筆記3-把本地倉庫推送到github
-c don gin 目的 commit 筆記 pre git from 說明:此筆記在centos 7 上完成 1.配置公鑰 [[email protected]/* */ ~]# ssh-keygen -t rsa -C "[email
ios 開發 推送消息的設置
adg 一個 iap ger uia oid style default play ///註銷推送 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #587ea8 } span.s1 {
GoBelieve IM 消息推送的方案
apn dem 所有 消息 做的 pan 切換 賬戶 mic 消息推送設計方案如下: 所有接入im SDK的deviceTOken都會存儲到IM服務器。就可以 IM服務器來根據你們服務器指定的useId來下發消息。判斷客戶端在線,並且APP在前臺。就是socket下發,IM
推送業務的邏輯設計
jpg 消息通道 消息流 負責 語言 自己 較高的 狀態 整合 項目上線至今已有1年左右的時間了,回頭查看自己以前寫的比較low的東西,感覺確實可笑,但是當時也是形勢所迫嘛。 現在為止,東西已經基本完善,不能說有多好吧,支持現在業務量肯定是沒有問題的。 梳理以前東西的時候,
iOS開發——遠程消息推送的實現
ice 分享 mit load con targe you 取消 tex 在我們使用App的過程中。總是會收到非常多的消息推送。今天我們就要來實現這個功能。首先消息推送分為本地消息推送和遠程消息推送。而當中又以遠程消息最為經常使用。可是在推送遠程消息之前。