cncml手绘网

标题: WEB消息推送框架 [打印本页]

作者: admin    时间: 2018-10-27 14:07
标题: WEB消息推送框架

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

特点:! Y# q& r: i) C" v# P, s
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) # U% R8 M& u! J: ]" H0 f( A
下载WEB消息推送框架
0 I: {5 f, I5 e8 }8 J
' L$ J# e( H! D7 \% H; A' ]3 Y
Fork on Github
  
下载ZIP压缩文件
下载19472次  c9 d2 \  P2 ^: h& |

2 P; e/ _/ W' b+ @# w0 v+ w- i, ^: b' C1 vPHPSocket.IO开发手册
( b1 i9 k- R+ N) v
' W( B" {' ]+ D! K
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
, b1 ~& L& i! r: D/ O7 l8 b其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


% M; k4 M, R, q0 }9 V( i  Z效果2:
- {5 b; n# _: M: u

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


" a! r- g: Y$ ]1 _% i# y, T3 E3 @- x
安装启动

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

3 d# l3 x% t% R


# g9 _5 @; k! d( w
( t# M) U! K2 r7 e前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    - x" C# Q$ I: {& A. U; e4 S
  2. <script>
    0 Y, q) ?) _6 c( T
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip9 x" I- i5 G' I# Z7 g
  4.     var socket = io('http://workerman.net:2120');
      |$ A% g' U# o& X$ }; q
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    - W9 s+ @5 g" Y( N+ K7 m
  6.     uid = 123;
    5 o' s' o/ ^# Y) U) l0 f) _
  7.     // socket连接后以uid登录
    9 B- ^$ J' e% o' u
  8.     socket.on('connect', function(){% D! Z& U8 G  v- p* w
  9.             socket.emit('login', uid);5 q% E0 y0 |! c1 C* o
  10.     });0 {! x: Q1 q* x; D1 [( u- {2 n7 |
  11.     // 后端推送来消息时+ ~  I/ j, j) T: X8 R! ?- c
  12.     socket.on('new_msg', function(msg){$ ?9 m# W% T' w# r4 w" c/ N
  13.         console.log("收到消息:"+msg);* i# @4 f# D4 `+ `! r
  14.     });0 A( p/ u) S' _( Y( N
  15.     // 后端推送来在线数据时) \1 m/ L3 B. i- b
  16.     socket.on('update_online_count', function(online_stat){
    8 k: `% l- u6 J- e2 ~8 V
  17.         console.log(online_stat);
    9 ~) G/ p1 t1 \7 M0 H/ r0 g1 X9 g) w
  18.     });2 i" \! c% i( f" j7 Y# V; Y
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    & L' ?" l# c- ]4 o5 b2 o/ `4 g
  2. // 指明给谁推送,为空表示向所有在线用户推送
    $ J  I) s6 D) ~+ S* o4 G, f* p
  3. $to_uid = "";
    5 l4 W3 p8 u; h# \5 Y. a+ H9 e
  4. // 推送的url地址,使用自己的服务器地址
    & ~- {5 C. C; c8 v; T
  5. $push_api_url = "http://workerman.net:2121/";
    1 \" O  _6 }7 p4 \' J
  6. $post_data = array(; R# W9 {* a! R9 c
  7.    "type" => "publish",0 c" O: p+ R' g: B0 i7 A4 o
  8.    "content" => "这个是推送的测试数据",  B0 Q* p" G* B% @  \& U6 @
  9.    "to" => $to_uid,
    , b' X8 @& V4 r7 m& ^
  10. );
    . j: O+ U0 V' U6 S4 b% i
  11. $ch = curl_init ();
    . x$ T! x5 A: E( h
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );1 ?" y6 y: N; Y" C! g; s' [& j9 c
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    ' i) D0 c9 h1 f# L
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );3 z% _6 X9 D9 \) y' Y, o
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    $ {: x4 {- `3 W; ^* x; |( e7 e6 Q9 ?! O
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    9 w7 V0 S5 u  j6 ~5 u. D
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));( }$ R' n8 s) p: T1 r" O0 f
  18. $return = curl_exec ( $ch );0 P' w' ], Q. j: }3 o) t+ N
  19. curl_close ( $ch );& X& ?  [1 O$ s( H! e) f: s& S
  20. var_export($return);
复制代码
$ Q$ v2 X) x% ~2 f( g

; k! G" Y" ^5 a0 n( B! ?
. ?# D1 T& H5 I
' C1 a/ L4 i( c# h# E! _. u

% s( [( Z" V$ P本文摘自 https://www.workerman.net/web-sender# S8 ?1 ^% L& \( `5 f
+ s7 Y1 \+ V, V0 w1 j; N

$ C" z" Z5 T3 d9 ~5 O- A) A4 o& R7 B; S3 O" U

5 A% ^8 j' h) a+ ^" M7 \4 Z% f0 H. @4 Z4 B8 K0 F* \
- F# b+ W4 ?! A' y# P# L& d1 [
3 z* W2 U; z5 u7 _6 w9 j
. r& m! M7 h: b, b
# n  J3 c2 I3 z* b  K7 P
( d  x6 v, Y. o" |! M/ u/ p6 w

( J4 c9 [( T/ R1 i0 o4 H  O6 ]

! y5 v7 ~, `  B; Q& |2 |3 I3 A/ s3 B5 W( N% n





欢迎光临 cncml手绘网 (http://cncml.com/) Powered by Discuz! X3.2