使用workerman進行訊息推送
Workerman是一款純PHP開發的開源高效能的PHP socket 伺服器框架。被廣泛的用於手機app、移動通訊,微信小程式,手遊服務端、網路遊戲、PHP聊天室、硬體通訊、智慧家居、車聯網、物聯網等領域的開發。 支援TCP長連線,支援Websocket、HTTP等協議,支援自定義協議。擁有非同步Mysql、非同步Redis、非同步Http、非同步訊息佇列等眾多高效能元件。與之類似的還有swoole,MeepoPS。
首先下載workerman的Web訊息推送系統 web-msg-sender。
# wget http://www.workerman.net/download/senderzip
# unzip senderzip
#cd web-msg-sender
#vim start.php
use Workerman\Worker;
// composer 的 autoload 檔案
include __DIR__ . '/vendor/autoload.php';
if(strpos(strtolower(PHP_OS), 'win') === 0)
{
exit("start.php not support windows, please use start_for_win.bat\n");
}
// 標記是全域性啟動
define('GLOBAL_START', 1 );
// 載入IO 和 Web
require_once __DIR__ . '/start_io.php';
可以註釋掉 webServer 服務 沒什麼用 省點資源
// require_once __DIR__ . '/start_web.php';
// 執行所有服務
Worker::runAll();
儲存
#vim start_io.php
找到 將埠改成你要監聽的埠 我是2120 記住要在安全組裡入方向新增白名單
// PHPSocketIO服務
$sender_io = new SocketIO(2120);
服務端設定完畢後
#php start.php start -d //開啟服務 並保持程序
推送類 我用的tp5
<?php
namespace app\index\moudel;
/**
* 推送事件
* 典型呼叫方式:
* $push = new WebSocket();
* $push->setUser($user_id)->setContent($string)->push();//連貫操作
*
* Class WebSocket
* @package app\index\moudel;
*/
class WebSocket
{
/**
* @var string 目標使用者id
*/
protected $to_user = '';
/**
* @var string 推送服務地址
*/
protected $push_api_url = 'http://127.0.0.1:2000';
/**
* @var string 推送內容
*/
protected $content = '';
/**
* 設定推送使用者,若引數留空則推送到所有線上使用者
*
* @param string $user
* @return $this
*/
public function setUser($user = '')
{
$this->to_user = $user ? : '';
return $this;
}
/**
* 設定推送內容
*
* @param string $content
* @return $this
*/
public function setContent($content = '')
{
$this->content = $content;
return $this;
}
/**
* 推送
*/
public function push()
{
$data = [
'type' => 'publish',
'content' => $this->content,
'to' => $this->to_user,
];
// var_dump($data);
// var_dump($this->push_api_url);
$ch = curl_init ();
curl_setopt($ch, CURLOPT_URL, $this->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, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect:'));
$res = curl_exec($ch);
curl_close($ch);
dump($res);
}
}
操作控制器
<?php
namespace app\index\controller;
use think\Controller;
use app\index\moudel\WebSocket;
class Index extends Controller
{
/**
* 推送一個字串
*/
public function push_msg(){
$uid = input('uid','');//uid為空的時候推送給所有使用者
$string = '這是一個推送的測試';
$string = input('msg') ? : $string;
$push = new WebSocket();
$push->setUser($uid)->setContent($string)->push();
}
/**
* 推送目標頁
*
* @return \think\response\View
*/
public function targetPage(){
return view();
}
}
推送目標的前端顯示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<strong id="count"></strong>
<h1 id="target"></h1>
</body>
</html>
<script src="http://cdn.bootcss.com/jquery/3.1.0/jquery.min.js"></script>
<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
<script>
jQuery(function ($) {
// 連線服務端
var socket = io('http://39.106.132.216:2000/'); //這裡當然填寫真實的地址了
// uid可以是自己網站的使用者id,以便針對uid推送以及統計線上人數,但一定是唯一標識
uid = 321;
// socket連線後以uid登入
socket.on('connect', function () {
socket.emit('login', uid);
});
// 後端推送來訊息時
socket.on('new_msg', function (msg) {
console.log("收到訊息:" + msg);
$('#target').append(msg).append('<br>');
});
// 後端推送來線上資料時
socket.on('update_online_count', function (online_stat) {
console.log(online_stat);
$('#count').html(online_stat);
});
})
</script>
http://我自己的域名/index/index/pushAString?uid=123
ok 為推送成功
offline 為未線上
fail 為失敗
前端成功展示 321為我自定義的uid
相關推薦
使用workerman進行訊息推送
Workerman是一款純PHP開發的開源高效能的PHP socket 伺服器框架。被廣泛的用於手機app、移動通訊,微信小程式,手遊服務端、網路遊戲、PHP聊天室、硬體通訊、智慧家居、車聯網、物聯網等領域的開發。 支援TCP長連線,支援Websocket、HT
使用websocket進行訊息推送服務
Websocket主要做訊息推送,簡單,輕巧,比comet好用 入門瞭解:https://www.cnblogs.com/xdp-gacl/p/5193279.html /** * A Web Socket session represents a conversation bet
SpringBoot中使用Websocket進行訊息推送
WebsocketConfig.java @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return
呼叫cordova相關外掛進行訊息推送(通知欄提醒、響鈴、震動)
原文: 呼叫cordova相關外掛進行訊息推送(通知欄提醒、響鈴、震動) 最近專案中需要對自己軟體的備忘錄進行訊息推送,從而提醒使用者。閒話就不多說了,將自己用到的外掛以及使用方法簡單分享一下,有什麼做的不好的地方或者好的建議歡迎隨時提出,謝謝! 一、本地訊息通知外掛,這裡使用cor
【轉 】workerman 實現訊息推送
WEB訊息推送框架 web-msg-sender是一款web長連線推送框架,採用PHPSocket.IO開發,基於WebSocket長連線通訊,如果瀏覽器不支援WebSocket則自動轉用comet推送。 通過後臺推送訊息,訊息可以即時推送到客戶端,非輪詢
Workerman之WEB訊息推送框架使用筆記【一】
伺服器使用的時候需要注意雲盾和360埠攔截 下載解壓到任意目錄 cd到目錄下執行 start.php linux :php start.php start -d win:直接執行start_
spring boot 整合activemq 進行服務端訊息推送(web頁面)
最近公司的專案裡有需要服務端向web端實時推送訊息的需求,網上搜索了一番,有前端頁面通過定時任務向後臺傳送ajax請求重新整理,有使用第三方提供的訊息服務(GoEasy),前者因為會有很多請求是無用的,容易加大伺服器負荷造成宕機,後者現在收費了(免費的也只能用一
Android 基於Netty的訊息推送方案之物件的傳遞(四)
在上一篇文章中《Android 基於Netty的訊息推送方案之字串的接收和傳送(三)》我們介紹了Netty的字串傳遞,我們知道了Netty的訊息傳遞都是基於流,通過ChannelBuffer傳遞的,那麼自然,Object也需要轉換成ChannelBuffer來傳遞。好在Netty本身已經給我們寫好了
Android 基於Netty的訊息推送方案之字串的接收和傳送(三)
在上一篇文章中《Android 基於Netty的訊息推送方案之概念和工作原理(二)》 ,我們介紹過一些關於Netty的概念和工作原理的內容,今天我們先來介紹一個叫做ChannelBuffer的東東。 ChannelBuffer Netty中的訊息傳遞,都必須以位元
Android 基於Netty的訊息推送方案之概念和工作原理(二)
上一篇文章中我講述了關於訊息推送的方案以及一個基於Netty實現的一個簡單的Hello World,為了更好的理解Hello World中的程式碼,今天我來講解一下關於Netty中一些概念和工作原理的內容,如果你覺得本篇文章有些枯燥,請先去閱讀《Android 基於Netty的訊息推送方案之Hell
IOS APNS訊息推送框架介紹(pushy)以及詳細使用方法
最近公司需要做IOS訊息推送的功能,我負責後臺推送,IOS端資料處理以及回撥我不負責,本篇文章主要介紹基於java的apns訊息推送,使用框架為pushy。 宣告:我先前也沒有接觸過這個IOS推送,自己研究了兩天,通過百度,對比各個框架的優缺點,最後選擇了這個框架,有說的不對的地方,還
android 實現mqtt訊息推送,以及不停斷線重連的問題解決
前段時間專案用到mqtt的訊息推送,整理一下程式碼,程式碼的原型是網上找的,具體哪個地址已經忘記了。 程式碼的實現是新建了一個MyMqttService,全部功能都在裡面實現,包括連伺服器,斷線重連,訂閱訊息,處理訊息,釋出訊息等基本操作。 首先新增依賴: dependencies { &
基於Netty實現的Android 訊息推送(即時通訊)的解決方案
根據Netty框架實現訊息推送(即時聊天)功能. Netty框架,TCP長連線,心跳,阻塞訊息佇列,執行緒池處理訊息傳送, 基於Google ProtoBuf自定義的訊息協議, TCP粘包/拆包.... 客戶端通過TCP連線到伺服器,並建立TCP長連線;當伺服器端收到新訊息後通過TCP連線推送給
百度雲訊息推送
import com.baidu.yun.core.log.YunLogEvent; import com.baidu.yun.core.log.YunLogHandler; import com.baidu.yun.push.auth.PushKeyPair; import com.baidu.yun
微信公總號訊息推送
* 任務完成給製作者推送訊息 &nbs
Android UDP - 簡單訊息推送功能
近期接觸了幾個小的Android開發專案,根據需求要利用到網路傳輸中的UDP協議方式傳輸,遇到不少坑,在此分享一下在Android應用中UDP的一些簡單技術功能實現,希望能幫到用得到的同僚。 需(wo)求(yao)分(gan)析(ma): 從PC上輸入一串亂七八糟,然後能在我手機(某為pow
[轉]spring boot下WebSocket訊息推送
原文連結:spring boot下WebSocket訊息推送, 修正部分錯別字 WebSocket協議 WebSocket是一種在單個TCP連線上進行全雙工通訊的協議。WebSocket通訊協議於2011年被IETF定為標準RFC 6455,並由RFC7936補充規範。WebSocket A
Django——微信訊息推送
前言 微信公眾號的分類 微信訊息推送 公眾號 已認證公眾號 服務號 已認證服務號 企業號 基於:微信認證服務號 主動推送微信訊息。 前提:關注服務號 環境:沙箱環境 沙箱環境地址: https:/
RabbitMQ訊息推送總結
藉助於 RabbitMQ 的 Web STOMP 外掛,實現瀏覽器與服務端的全雙工通訊。從本質上說,RabbitMQ 的 Web STOMP 外掛也是利用 WebSocket 對 STOMP 協議進行了一次橋接,從而實現瀏覽器與服務端的雙向通訊。 安裝 RabbitMQ 服務
iOS訊息推送機制
Little_Dragon 關注 2015.10.05 22:33* 字數 1253 閱讀 17337 評論 36 喜歡 151 推送