用PHP和Websocket實現實時通訊

說到websocket大家一定不會陌生,WebSocket是HTML5一種新的協議。它實現了瀏覽器與服務器全雙工通信(full-duplex)。一開始的握手需要借助HTTP請求完成,當瀏覽器和服務器握手成功后,瀏覽器和服務器之間就形成了一條快速通道。兩者之間就直接可以數據互相傳送。有了websocket, 大家就可以摒棄以往用輪詢來實現實時通訊的方式了。
有了websocket后,應運而生的相關產品也不在少數,選擇也成了最大的問題,在這里你可能會說“干嘛用別人的,我可以自己用原始的開發一個啊” 對此我只想說你真NB,我也很想知道你是如何解決以下問題的:
1.??????? 你是打算花1個月,2個月還是1年還實現一個websocket通信的?如果你說你打算花一個月,那說明兩點,你的技術要上天了(這么刁的東西你可以那么快弄出來還不存在性能問題,除了我現有的膝蓋,請把我下輩子的膝蓋也拿走),貴公司土豪(貴公司對技術的炙熱追求已經達到了行業的巔峰了,看來你們的項目不是很緊嘛,預算挺多嘛,告訴我貴公司的名字我也來鉆研技術,哈哈哈)
2.??????? Websocket只支持ie10+, chrome, firefox, safari, opera. 不說多了,當前IE9及低版本的用戶群體還有很多,你是怎么覺得這些低版本瀏覽器的實時通訊的?
上面兩個問題無非就是涉及到兩方面問題:開發成本和瀏覽器兼容性問題。站在管理者角度來看,都希望盡可能多的壓縮開發成本,所有選擇第三方推送服務是眾多企業的一個理性選擇。
選擇產品時需要注意以下幾點:
1.??????? 代碼結構是否清晰易懂
2.??????? 消息到達率怎么樣,數據到達情況是否可視
3.??????? 瀏覽器兼容性如何
4.??????? 產品的穩定性和安全性
好,重點來了,我不去評判其他產品的優缺點,只給出我對我最終選擇的產品-GoEasy推送作一個單方面的評價。GoEasy推送滿足我上面列的所有指標。
1.??????? 代碼結構是否清晰易懂
GoEasy的代碼分為訂閱和推送兩部分:
訂閱時,只需要三句代碼:
a.??????? 引入goeasy.js (文件非常小)
<script type="text/javascript" src="http://cdn.goeasy.io/goeasy.js"></script>

?

b.??????? 創建goeasy實例
var goEasy = new GoEasy({appkey: 'appkey'});

?

c.??????? 訂閱channel.

??????????????

      goEasy. subscribe({channel: 'channel1',onMessage: function(message){alert('Meessage received:'+message.content);//接收到推送的消息}});

?

推送時,用goeasy提供的restful api來實現,api只需要三個參數即可:

URL: http://goeasy.io/goeasy/publish

Method: Post

Parameters: appkey, channel, content

2.??????? 消息到達率怎么樣,數據到達情況是否可視
我們項目的用戶并發量目前最高在300人的樣子,每天會推送30條消息的樣子,每條消息的到達情況都可以在goeasy后臺頁面進行查看。至于到達率,我們項目的對到達率的要求是98%, 就目前來看GoEasy應該是100%的到達率。
3.??????? 瀏覽器兼容性如何
除了常用的瀏覽器chrome, firefox, safari, opera外還支持IE 6到IE11的版本,低版本IE瀏覽器GoEasy采用的是polling的方式。GoEasy在兼容性這方面做的很不錯。
4.??????? 產品的穩定性和安全性
穩定性的判定:項目已經持續運行了4個月了,沒有出現過消息推不出或接收不到的情況。
安全性的判定:GoEasy在安全控制方面主要是通過appkey來控制,創建好app后系統會生成兩個key,一個既可以用來接收又可以用來推送,另一個只可以用來接收。所以用戶可以選擇性的暴露你的key.
這樣輕松用PHP實現客戶端與服務器端的實時通信了。
PHP websocket實時消息推送
?

轉載于:https://www.cnblogs.com/emmamao/p/6203133.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255735.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255735.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255735.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ABB SocketReceive 套接口 函數

SocketReceive函數使用方法&#xff1a; SocketReceive 從遠程計算機接收數據。 SocketReceive 可以被客戶端和服務器程序使用。 基本樣例&#xff1a; 下述樣例說明了 SocketReceive 的語法: Example 1 VAR string str_data; ... SocketRe…

【數據庫學習筆記】——創建數據庫連接對象connection

目錄 connect函數的參數 創建連接對象連接MySQL代碼 連接對象常見屬性與方法 事務名詞解釋 課程視頻鏈接&#xff1a; 第14節 Python操作數據庫_嗶哩嗶哩_bilibili666https://www.bilibili.com/video/BV1q54y147KX?fromsearch&seid968950907021994347&spm_id_from3…

數據庫常用增刪改查記錄等語句

1增 1.1【插入單行】insert [into] <表名> (列名) values (列值)例&#xff1a;insert into Strdents (姓名,性別,出生日期) values (開心朋朋,男,1980/6/15) 1.2【將現有表數據添加到一個已有表】insert into <已有的新表> (列名) select <原表列名> from &…

一個關于pynoi游戲的C語言編程

“去吧&#xff0c;秦&#xff0c;好好享受這個夜晚&#xff0c;我給你準備了一份禮物&#xff0c;希望你能喜歡。”小布萊克眨著眼睛笑道&#xff0c;狡猾的像一頭小狐貍。轉載于:https://www.cnblogs.com/jackey18/p/8260774.html

【數據庫學習筆記】——cursor游標對象

目錄 1、創建cursor對象 2、cursor對象常用方法 3、操作數據庫的常見流程&#xff08;五部曲&#xff09; 課程視頻鏈接&#xff1a; 第14節 Python操作數據庫_嗶哩嗶哩_bilibili666https://www.bilibili.com/video/BV1q54y147KX?p2&spm_id_frompageDriver 1、創建cu…

ABB 壓包指令PackRawBytes 解包指令UnpackRawBytes

ABB 壓包指令PackRawBytes 解包指令UnpackRawBytes PackRawBytes- 將數據導入 rawbytes 數據。 使用方法 PackRawBytes 用于將 num, dnum, byte,或者 string類型的數據&#xff0c;打包到 rawbytes 類型的變量中. 基本舉例 &#xff1a; VAR rawbytes …

Android Https相關完全解析 當OkHttp遇到Https

Android Https相關完全解析 當OkHttp遇到Https轉載于:https://www.cnblogs.com/zhujiabin/p/5304617.html

基于ARM核AT75C220在指紋識別系統中應用

紋識別技術近年來逐漸成熟&#xff0c;在門禁、安防和金融等方面得到了越來越廣泛的應用。典型的指紋識別系統是以指紋傳感器和DSP處理器為核心構成。指紋傳感器采集指紋圖像&#xff0c;DSP處理器實時實現指紋識別算法。同時&#xff0c;通常的指紋識別系統還具有較強的通信能…

【數據庫學習筆記】——創建數據庫文件

目錄 1、數據庫基礎知識 2、創建數據庫文件 1、數據庫基礎知識 什么是數據庫&#xff1f;——數據庫是存放多個數據表的倉庫&#xff0c;數據表可以理解為是二維數組 如上表所示&#xff0c;每個表由行列組成&#xff1a; 字段&#xff1a;每一列稱之為一個字段&#xff0c;每…

歲月在流逝,從阿里退下來接近70后程序猿帶給我的啟示

大家好&#xff0c;今天為大家帶來一個非常勵志&#xff0c;讓我反思的故事。今天為大家講的是我父親是如何用行動教會我成為程序員的。 歲月的錘煉 圓口接口的鍵盤&#xff0c;2003年的 有人問這個鍵盤難道沒有擦過嗎&#xff1f;不是的&#xff0c;是擦不掉的歲月痕跡。如果有…

淺談工業機器人的運動停止

德系的工業機器人系統中&#xff0c;對于機器人停止運動&#xff0c;定義了3種模式&#xff0c;比如 KUKA 的工業機器人分別定義了 Stop 0 &#xff0c;Stop 1&#xff0c;Stop 2 (*注1)。這種定義模式是與機器人的機械結構和電氣結構相關聯的。 對于此&#xff0c;讀者應該先了…

MySQL 數據表備份導出,恢復導入操作實踐

因為經常跑腳本的關系&#xff0c; 每次跑完數據之后&#xff0c;相關的測試服數據庫表的數據都被跑亂了&#xff0c;重新跑腳本恢復回來速度也不快&#xff0c;所以嘗試在跑腳本之前直接備份該表&#xff0c;然后跑完數據之后恢復的方式&#xff0c;應該會方便一點。所以實踐一…

js實現去重字符串

實現去重字符串主要是把重復的字符與原來的字符&#xff08;先push()進入一個數組存起來&#xff09;相匹配&#xff0c;如果match返回的不是null則說明重復&#xff0c;就刪除掉&#xff1a; <script>var str prompt("請輸入一個字符串&#xff1a;", "…

ABB 機器人 IsStopMoveAct 指令 - Is stop move flags active

IsStopMoveAct - Is stop move flags active 用法&#xff1a; IsStopMoveAct 用于得到當前或連接運動任務的 停止移動位狀態。 is used to get the status of the stop move flags for a current or connected motion task. 基本示例&#xff1a; stopflag2:…

【數據庫學習】——數據庫可視化--Navicat下載安裝連接教程

目錄 進入網站 下載可視化軟件 安裝 雙擊桌面圖標&#xff0c;選擇試用 連接數據庫 查看數據庫中的表&#xff0c;如下所示 常用數據庫有&#xff1a; MySQL、sqlite等 進入網站 Navicat | 產品https://www.navicat.com.cn/products 下載可視化軟件 這里以數據庫sql…

機器學習筆記1(K-近鄰算法)

人生苦短&#xff0c;我用PythonK-近鄰算法&#xff1a;簡單來說&#xff0c;K-近鄰算法就是采用測量不同特征值之間的距離方法進行分類優點&#xff1a;精度高、對異常值不敏感、無數據輸入假定缺點&#xff1a;計算復雜度高、空間復雜度高適用范圍&#xff1a;數值型、標稱型…

C# 格式化字符串

原文地址&#xff1a;http://www.cnblogs.com/zyh-nhy/archive/2007/10/11/921240.html 1 前言如果你熟悉Microsoft Foundation Classes&#xff08;MFC&#xff09;的CString&#xff0c;Windows Template Library&#xff08;WTL&#xff09;的CString或者Standard Template …

【數據庫學習筆記】——操作sqlite(增刪改查)以及cursor的方法介紹

目錄 1、sqlite數據庫介紹 1&#xff09;常見的數據庫操作 2&#xff09;數據操作常見步驟 2、向數據表中增加數據&#xff08;insert into&#xff09; 1&#xff09;向數據表中添加一條記錄 2&#xff09;向數據表中一次性添加多條記錄 ? 3、修改數據表中已有的數據 1)…

springMVC分析-2

springMVC的請求映射 上一次分析了一下springMVC的大致流程&#xff0c;這次細分一下&#xff0c;對請求映射進行分析。 先從DispatcherServlet中的getHandler()方法分析 protected HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception {for (Hand…

簡單消息協議

簡單消息協議&#xff1a;定義了ROS與工業機器人之間簡單的消息協議。額外的處理程序和管理器類包含用于處理有限連接的系統。這個包是ROS-Industrial計劃的一部分。 簡單消息協議定義了ROS驅動層與機器人控制器層通信的消息結構。該消息結構符合下列要求&#xff1a; 1、結構足…