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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:0 q7 R4 ?7 x" \
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    4 u  z: d7 k& a- t
下载WEB消息推送框架
# ^9 T) p; b& K
+ j* _% j) {5 [/ E
   下载19472次, ]! e0 r7 L. \2 S5 d' ^6 j7 A
, _# y- l6 t' ?1 R6 x$ r* D
PHPSocket.IO开发手册
; i/ r9 N  J$ l  s1 }+ I

# |  ]6 _% u8 x4 \4 o9 M
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content9 v- H* ^& z2 o- q6 l0 i' z
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


! M5 s, q; [" F4 |效果2:
5 Z' S$ {, K0 Q1 Y$ M

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

8 I/ O' J1 x1 g( l
' @- n( Q! Y4 u$ c5 a& Q6 _
安装启动

首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


) y4 e1 b7 r, q

! {9 b! q1 c3 `* |0 [  y

& `: g$ o: S" F前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    9 B. @! q9 |2 l% A, S" G3 R
  2. <script>
    ) Y: }+ W7 v$ l$ Y2 j
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    7 w( I% D8 e7 R' p2 y( e
  4.     var socket = io('http://workerman.net:2120');
    1 b+ W4 E& Q4 I
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    & ?2 a6 a7 b4 s
  6.     uid = 123;) d3 Y! B5 f7 \: V. t
  7.     // socket连接后以uid登录
    9 ?+ m# R$ z9 M$ z/ g5 u
  8.     socket.on('connect', function(){
    8 ^: M+ c+ h, x- F
  9.             socket.emit('login', uid);5 m; i& c$ l: |+ Z+ ?& ^
  10.     });
    / U$ z! m. t( o" l; `
  11.     // 后端推送来消息时+ @/ l, J. |- Y
  12.     socket.on('new_msg', function(msg){
    & P* M/ I1 i: L6 O( k
  13.         console.log("收到消息:"+msg);
      e1 ^, L& q8 `5 o% j, r
  14.     });
      r9 X/ v1 Y$ A$ t# f# Q9 [
  15.     // 后端推送来在线数据时
    0 ?  m( Y9 o" ]  a( q* c" ^3 k) Z
  16.     socket.on('update_online_count', function(online_stat){
    ; J* o+ B0 \! h9 G- G2 ^# K* u; b
  17.         console.log(online_stat);1 q9 m9 W9 [# y! j! z
  18.     });1 o# C* f3 ?! ]& n' d/ r! }
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    2 d, [0 s* n* ~
  2. // 指明给谁推送,为空表示向所有在线用户推送2 S! ^8 ~/ D0 m5 H( b% V
  3. $to_uid = "";
    ' f2 H# Z' H8 f% \& I2 A) e1 D9 t
  4. // 推送的url地址,使用自己的服务器地址
    2 E7 m6 G* a7 `
  5. $push_api_url = "http://workerman.net:2121/";7 @0 ~3 S4 W$ f  z
  6. $post_data = array(
    8 B+ x: Q+ U# [1 b: i# O
  7.    "type" => "publish",2 S7 t. ~6 g3 H' X# k7 @
  8.    "content" => "这个是推送的测试数据",% M5 P5 Q6 A% v
  9.    "to" => $to_uid,
    ) O" L- F% Y1 ]9 V) n9 e- Z8 U
  10. );3 K) y( Q3 I/ y& C- O0 p' S7 @7 n
  11. $ch = curl_init ();2 j6 u1 C! w& n  m8 e
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );! n  S2 ~* ]7 Z0 b* M  ~
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );; x3 z9 D  v( T$ j
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    , u: Q& T1 }6 N. j1 G
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    ) @' S$ m' A& l+ N9 H& N
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    . I& j1 [! W  N+ J3 R8 r
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    7 I( \% b* q8 K/ x2 N$ @
  18. $return = curl_exec ( $ch );  d* R6 F5 T5 X# z
  19. curl_close ( $ch );
    6 Y! x* k1 M5 R: q
  20. var_export($return);
复制代码
5 ~+ a) {/ s3 V" s; g' E5 r
/ s# U: C/ Y  c, P" [! x7 z1 a

! v' p" F0 x  S- m, j" s
$ h2 T0 p+ O6 `4 G- y

" |& l: b) K8 Y% b: Y; Z& q本文摘自 https://www.workerman.net/web-sender
' w8 X. d5 W. b1 z2 a( J$ b% h5 o
9 Q9 q0 }' \0 P* F2 K3 t# M% ^8 B' ]3 H3 v" x) e6 Q2 [
. n' Z- H  m! |) j9 g

4 v# I) z6 A% z4 y
2 U" ?# ?. m; S; Z/ N1 v0 {* J  H* S9 R* A2 j8 _

( Z6 u9 l. b* t9 f1 ~- l% p" V
1 A; _8 F% K0 L+ E( F+ `+ N

: N( T: o& T/ h9 O7 A* J

% I  F' _4 j2 K) W1 m7 n- \8 P( H' G( K: _5 C
' B" v5 V: p/ |5 H& y: m. O

7 O5 h1 a1 M# h( A  f+ P7 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-1-30 20:40 , Processed in 0.077047 second(s), 22 queries .

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