您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15296|回复: 0
打印 上一主题 下一主题

[php学习资料] WEB消息推送框架

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-27 14:07:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。

特点:
" w/ ^- z8 n3 Q& e& _
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) $ D. a: r0 ?( W6 y. u* L
下载WEB消息推送框架" i1 Z+ }: `: w  q

; S9 H# t! n1 w1 `( o& X' C$ Q   下载19472次
, l" s& X- H! Y' F; [4 ]0 X
/ ?+ f' ?( q, W$ q" `- E
PHPSocket.IO开发手册
3 u- t* s: m5 P1 {4 s3 ?

3 a: E' C6 J: v; n% p
PHPSocket.IO开发手册Demo:效果1:

接收消息页面:http://demos.workerman.net/web-sender/

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
9 Q; o/ M* i* P! _& }其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

6 Z: L0 [' y$ A5 C& s" R1 c/ F
效果2:
6 L0 f1 \) n: W% ?8 I

见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计


) `& |# r% H6 Q9 \/ z0 r9 ~9 K  W7 J8 J, K- f$ A
安装启动

首先:参考手册检查/安装workerman环境

1、下载:(下载web-msg-sender,并解压缩到任意目录

2、启动:linux系统cd到到框架目录里运行php start.php start -d。windows系统进入到框架目录里双击start_for_win.bat文件启动。

3、测试:浏览器访问端口http://ip:2123或者http://域名:2123,例如 http://workerman.net:2123如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


" b1 a0 H: e' ^4 G3 l" Q


. Y" e, y, K/ R) o. Q
: L+ @8 @* J2 c. n' Y" }: Q前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    / \) B, ]) F/ G* _( {5 I( S8 o) y
  2. <script>7 d/ d# A- C7 o
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip5 Z* w8 a6 K1 `' ?2 b
  4.     var socket = io('http://workerman.net:2120');
    # ~2 J+ g! f7 x0 r
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数; Y9 p0 q7 h& \) z# V5 E0 [  {& h
  6.     uid = 123;. |8 K5 T9 r4 e+ u* E
  7.     // socket连接后以uid登录
    8 j2 V/ u* _; ~
  8.     socket.on('connect', function(){
    2 z9 O! a1 v5 r# F! x
  9.             socket.emit('login', uid);
    / A0 v  Q& a/ u/ m& N
  10.     });0 W  x3 a1 R1 w6 Z/ |
  11.     // 后端推送来消息时
    - |' G6 c3 y2 V! ^* l8 d! r! W
  12.     socket.on('new_msg', function(msg){
    2 j5 k4 G- U5 X' n
  13.         console.log("收到消息:"+msg);9 ^3 q% ~$ j  W& D% [& K
  14.     });
    / e( l, {, X9 @  p; H
  15.     // 后端推送来在线数据时$ g1 M4 Y7 x1 K3 \. K) v+ u' Y% f
  16.     socket.on('update_online_count', function(online_stat){
    ! L7 f* c% C8 Y. p4 |1 Z7 n+ i/ |
  17.         console.log(online_stat);
    + x+ \& I' h' D9 q( a
  18.     });$ \: l  q9 m$ ?) y$ n5 R
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ; {( E  Y: L8 Z3 c* M0 W% d! Z$ E! q
  2. // 指明给谁推送,为空表示向所有在线用户推送
    5 c4 \/ W" Z: U! Z5 q! H" X, J& p) y% ~
  3. $to_uid = "";7 q0 E) V8 D* q1 H1 m
  4. // 推送的url地址,使用自己的服务器地址6 C" S* S  ~" O; n$ Q. x: A! l7 ]
  5. $push_api_url = "http://workerman.net:2121/";
    ! W+ R$ a7 O. ^: O$ ~! t: o
  6. $post_data = array(( s9 z% N: ]1 f
  7.    "type" => "publish",
    1 B0 f- q( N0 F
  8.    "content" => "这个是推送的测试数据",
    * @- u+ m( D: ~/ q
  9.    "to" => $to_uid, # H4 `2 m1 N+ f0 k/ N! P' _
  10. );9 }! R4 X& b& r$ a  C) G8 J6 J  }
  11. $ch = curl_init ();( O9 Q1 y; S4 X9 d! F' b
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    $ V% V" j% H, A! r' W6 w; r
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );6 F+ n! U6 P1 O! t6 C% M
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );  X3 Z: o- s+ g' C
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );8 G) j( x: j! H, K
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    5 R! o& [# G" v% u
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));9 U, H0 C8 G" L  b( c9 F( _6 ?: e
  18. $return = curl_exec ( $ch );& `2 O8 k- i. @% E( {% m) q
  19. curl_close ( $ch );
    ( Z! g; k1 B1 e- x. `# B
  20. var_export($return);
复制代码

3 K% t' A! ^8 {+ z( J! w- [+ W) |9 v# `2 D1 l: J" j

" ]6 [$ i9 B) y; V7 x* H! T7 D) N/ Y0 l4 n* E
/ T! x3 K6 I. v) e
本文摘自 https://www.workerman.net/web-sender' U/ j; _9 \: k* e( x+ F$ m8 Q

! d! Y3 {! ^9 Q* U
* X% o- a" T$ B( Z  w; T/ k1 Q2 }# n  o2 L0 @

1 M5 o% U, {* g! S: \) v( L
3 b4 V4 x, m6 L- g% h! G( |9 r0 ~" h8 k9 y. e

2 v0 ~' ^$ {& U# l" D1 |  z$ t

. F7 z4 e1 n7 N, B# L$ H
( s) q, U& a" N* |7 }  Y* \
" d. a1 _- \# N% a# k' @
7 L+ F4 ~* q  A; z& Z

. ?4 |! |" [3 L0 T
' X+ J; g# c6 w+ C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-7-19 15:49 , Processed in 0.095274 second(s), 22 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!