cncml手绘网

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

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

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

特点:1 Z" |; k5 P9 u2 V
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    : w6 E" n9 {, m4 w/ i
下载WEB消息推送框架5 i7 v5 x6 {, }: ?2 D
: C1 I+ Q8 \1 X$ B  u/ J- G* S& z. Q
Fork on Github
  
下载ZIP压缩文件
下载19472次
% M3 t- v3 M3 {6 {2 G8 q
/ |5 X. K  |: [4 M+ F6 v
PHPSocket.IO开发手册
% r) a9 R+ X% y6 |6 N6 g" i

0 N3 e% R6 j% l' L4 k) W
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
  W  N1 Q0 F  q$ M其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

  M! i' w" g4 u( @0 Z' N
效果2:
% Z, }; v9 L) b% G5 s3 b

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


) n, i9 n/ y/ }5 B3 t+ ?& m
8 ?# t) O6 h4 m: ?5 K安装启动

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


+ R) ~6 P( k& \1 h2 C2 x


- l, A$ n$ g- E9 W; m9 o# m3 D. e8 z* o4 f' V2 |
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    3 z& V3 z- k* c
  2. <script>
    ; F/ j  R5 b5 A7 u5 L7 i
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    % v0 b% V; j! I* c8 G2 q% b& l
  4.     var socket = io('http://workerman.net:2120');
    3 F$ r/ [, C0 N) o6 E
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数2 Q# Q5 Y6 s& ?" d# V
  6.     uid = 123;
    4 x" l0 p. p* X" F( r9 p  x; G( m4 @
  7.     // socket连接后以uid登录
    , D7 ?+ O/ T& b6 s& S8 E
  8.     socket.on('connect', function(){; M. H6 ^+ U/ f2 m
  9.             socket.emit('login', uid);7 b5 |7 ]# E$ O% ?! C3 A' r
  10.     });
    ' F2 R* x: R" N4 C  g) v: }5 ^
  11.     // 后端推送来消息时& c& M4 X3 U: R; c. w) U6 g
  12.     socket.on('new_msg', function(msg){
    + U, v  D# K7 q$ ?# |0 H5 x
  13.         console.log("收到消息:"+msg);
    7 n7 p5 ?1 i5 s) S+ S
  14.     });
    ' h. i0 P( R" J3 K! Q
  15.     // 后端推送来在线数据时& n7 e2 Y. r  i6 g! U0 r! J
  16.     socket.on('update_online_count', function(online_stat){
    1 T! f: J4 J0 ]  ]2 q" W0 Q
  17.         console.log(online_stat);3 x% T  f- T9 v# a% N9 K* S
  18.     });
    9 s+ G/ v& a6 o
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php$ c- S- r7 ]6 R% O" l3 s3 m
  2. // 指明给谁推送,为空表示向所有在线用户推送
    ; Q1 ^/ }4 a% J- c6 J3 f  z
  3. $to_uid = "";
    8 i$ z# l  M( B8 B2 ~
  4. // 推送的url地址,使用自己的服务器地址" m' W) K2 W/ W: ]! t4 L4 {) I
  5. $push_api_url = "http://workerman.net:2121/";/ Z/ N3 G, M- ~$ N2 s1 F
  6. $post_data = array(& b+ s1 Q! u2 D1 f. M$ Y
  7.    "type" => "publish",6 L' Z9 A3 u& u5 b; F0 u  V7 E" x
  8.    "content" => "这个是推送的测试数据",
    8 i# k5 ~7 J% C8 y  }& R
  9.    "to" => $to_uid, , B+ N7 x1 E2 {# y5 @$ T
  10. );
    2 G5 r# K: i$ d$ p* h
  11. $ch = curl_init ();- b' G- a  m& M+ h6 w
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    9 g1 ?! x" a6 C* Q9 w
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    8 `) p/ B  ~! w5 M7 Y8 Q0 Y3 r' l
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );" f; [& h) A1 g, w5 @# m
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );$ c9 D( L5 \- {; F# S& W" `
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );. r4 D/ y9 T' P3 }9 i( i
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));5 y' ~7 l" }1 e) I
  18. $return = curl_exec ( $ch );$ @2 T1 u9 t1 Z& q" }% P
  19. curl_close ( $ch );$ Y, K4 ]. g5 L% @
  20. var_export($return);
复制代码

5 y6 v* n% \3 F4 l0 ?! h4 r' T9 z, k6 P6 R8 O
  j" I* c/ N! T2 c
7 c, i7 G6 l' F0 u7 {& L

+ r* _1 Q' V* Z9 J/ _本文摘自 https://www.workerman.net/web-sender
2 t( ^8 q" H3 i2 |* p: G) p8 N- A6 w  t# t9 N: C: q0 s6 `4 ~
7 O6 n& \6 Q* p. D2 K

, G/ B6 }2 a8 w/ r: A$ I4 h
" X) m5 h9 {) f. L/ ?# c4 e0 |, a& a% [; x
9 r6 B( N. G  A1 |, S: A  I; y

9 q- }0 `# k4 Z. w! |( }
1 R/ X. X9 `; h) Y3 Q" c6 ^

. G9 @. ~( d" j/ m" ~! C
2 [3 ?+ X+ j' c

, Q$ [+ F8 q4 T7 t
# Y+ A. W8 j6 C5 c1 M8 i

; n$ `% D8 J6 q+ D




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