⑴ php實現消息推送
如何實現消息推送功能消息推送(Push)就是通過伺服器把內容主動發送到客戶端的過程。運營人員通過自己的產品或第三方工具對用戶移動設備進行主動消息推送。完成推送後,消息通知會展示在移動設備的鎖定屏幕及通知欄上,用戶點擊通知即可去往相應頁面。
現在流行的消息推送實現方式,主要為長鏈接方式實現。其原理是客戶端主動和伺服器建立TCP長鏈接,長鏈接建立之後,客戶端定期向伺服器發送心跳包用於保持鏈接,當有消息要發送的時候,伺服器可以直接通過這個已經建立好的長鏈接,將消息發送到客戶端。
個推作為國內移動推送領域的早期進入者,於2010年推出個推消息推送SDK產品,十餘年來持續為移動開發者提供穩定、高效、智能的消息推送服務,成功服務了人民日報、新華社、CCTV、新浪微博等在內的數十萬APP客戶。個推消息推送,也是運用長鏈接的方式實現消息推送的,其長鏈接穩定性高、存活好,消息送達率高。開發者通過集成個推消息推送SDK,即可簡單、快捷地實現Android和iOS平台的消息推送功能,有效提高產品活躍度、增加用戶留存。
如果您對個推消息推送感興趣,歡迎前往個推開發者中心免費注冊體驗。
群機器人是釘釘群的高級擴展功能。群機器人可以將第三方服務的信息聚合到群聊中,實現自動化的信息同步。目前,大部分機器人在添加後,還需要進行Webhook配置,才可正常使用(配置說明詳見操作流程中的幫助鏈接)。
例如:
通過聚合GitHub,GitLab等源碼管理服務,實現源碼更新同步。
通過聚合Trello,JIRA等項目協調服務,實現項目信息同步。
另外,群機器人支持Webhook協議的自定義接入,支持更多可能性,例如:你可將運維報警通過自定義機器人聚合到釘釘群實現提醒功能。
消息發送太頻繁會嚴重影響群成員的使用體驗,大量發消息的場景(譬如系統監控報警)可以將這些信息進行整合,通過markdown消息以摘要的形式發送到群里。
每個機器人每分鍾最多發送20條。如果超過20條,會限流10分鍾。
登錄釘釘PC客戶端(請升級至最新版),操作入口:
窗口右上角點擊【頭像】,進入」機器人管理「,可對所有機器人進行統一管理。
進入一個釘釘群,在群的頂部功能欄中,點擊【群設置】,進入菜單可以看到【群機器人】的入口,點擊進入「群機器人」的管理面板後,可以進行添加、編輯和刪除群機器人的操作。
我們這里使用最後一個webhook
步驟一,在機器人管理頁面選擇「自定義」機器人,輸入機器人名字並選擇要發送消息的群。如果需要的話,可以為機器人設置一個頭像。點擊「完成添加」,完成後會生成Hook地址,如下圖:
步驟二,點擊「復制」按鈕,即可獲得這個機器人對應的Webhook地址,其格式如下:
(1)獲取到Webhook地址後,用戶可以向這個地址發起HTTPPOST請求,即可實現給該釘釘群發送消息。注意,發起POST請求時,必須將字元集編碼設置成UTF-8。
(2)當前自定義機器人支持文本(text)、鏈接(link)、markdown(markdown)、ActionCard、FeedCard消息類型,大家可以根據自己的使用場景選擇合適的消息類型,達到最好的展示樣式。
(3)自定義機器人發送消息時,可以通過手機號碼指定「被@人列表」。在「被@人列表」裡面的人員收到該消息時,會有@消息提醒(免打擾會話仍然通知提醒,首屏出現「有人@你」)。
(4)當前機器人尚不支持應答機制(該機制指的是群里成員在聊天@機器人的時候,釘釘回調指定的服務地址,即Outgoing機器人)。
PHP怎麼實現主動向客戶端發送信息實現消息推送首先需要瀏覽器支持websocket協議,這是前提,然後再通過瀏覽器發起websocket請求到伺服器,建立一條連接,這是伺服器端就可以通過這條連接向瀏覽器推送消息了。
伺服器端對websocket的支持可以通過一些第三方庫來實現,供參考
hoa/websocket網頁鏈接
swoole庫
php實現websocket實時消息推送一、socket協議的簡介
WebSocket是什麼,有什麼優點
WebSocket是一個持久化的協議,這是相對於http非持久化來說的。應用層協議
舉個簡單的例子,http1.0的生命周期是以request作為界定的,也就是一個request,一個response,對於http來說,本次client與server的會話到此結束;而在http1.1中,稍微有所改進,即添加了keep-alive,也就是在一個http連接中可以進行多個request請求和多個response接受操作。然而在實時通信中,並沒有多大的作用,http只能由client發起請求,server才能返回信息,即server不能主動向client推送信息,無法滿足實時通信的要求。而WebSocket可以進行持久化連接,即client只需進行一次握手,成功後即可持續進行數據通信,值得關注的是WebSocket實現client與server之間全雙工通信,即server端有數據更新時可以主動推送給client端。
二、介紹client與server之間的socket連接原理
1、下面是一個演示client和server之間建立WebSocket連接時握手部分
2、client與server建立socket時握手的會話內容,即request與response
a、client建立WebSocket時向伺服器端請求的信息
GET/chatHTTP/1.1
Host:server.example.com
Upgrade:websocket//告訴伺服器現在發送的是WebSocket協議
Connection:Upgrade
Sec-WebSocket-Key:x3JJHMbDL1EzLkh9GBhXDw==//是一個Base64encode的值,這個是瀏覽器隨機生成的,用於驗證伺服器端返回數據是否是WebSocket助理
Sec-WebSocket-Protocol:chat,superchat
Sec-WebSocket-Version:13
Origin:
b、伺服器獲取到client請求的信息後,根據WebSocket協議對數據進行處理並返回,其中要對Sec-WebSocket-Key進行加密等操作
HTTP/1.1101SwitchingProtocols
Upgrade:websocket//依然是固定的,告訴客戶端即將升級的是Websocket協議,而不是mozillasocket,lurnarsocket或者shitsocket
Connection:Upgrade
Sec-WebSocket-Accept:HSmrc0sMlYUkAGmm5OPpG2HaGWk=//這個則是經過伺服器確認,並且加密過後的Sec-WebSocket-Key,也就是client要求建立WebSocket驗證的憑證
Sec-WebSocket-Protocol:chat
3、socket建立連接原理圖:
三、PHP中建立websocket的過程講解
SocketService.php:
web.html: