cncml手绘网

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

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

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

特点:
1 w/ r' z( h. i+ j4 O: U
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    / Z# E* g5 }+ q& {& e- O* l, y7 @
下载WEB消息推送框架+ S6 r% a, a7 g; [/ h

" G1 ?# [# }7 }( b7 A2 Z9 A: o( o
Fork on Github
  
下载ZIP压缩文件
下载19472次5 C8 v, t1 }; M3 x' o5 R
0 F" k6 m3 g2 G. X2 ?
PHPSocket.IO开发手册5 j: J# i4 g. d* N9 @

/ ?8 w5 }! a7 F  q
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
; ^$ R) {8 f4 z8 W2 F4 I其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


3 x- j/ C" `& [) ^% n/ x- V- J效果2:
9 O, Q; `, ~1 n

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


3 k, z# [0 `5 H! }- G! Z0 C2 d  e& q' q/ 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


& k0 q0 ^% U" @$ X


3 t) P5 Z9 K# l9 R4 U  ^( k/ O$ N. l+ z
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    4 y' J0 B) v! n  }% K
  2. <script>
    2 e- Y. F* E6 c8 ?
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip9 b; `8 X9 p& ~" S
  4.     var socket = io('http://workerman.net:2120');
    * b4 Y. D! [% Q, v- A# p# w
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数6 n+ V. Q% J6 h" ?1 ~$ j, Z  m& K
  6.     uid = 123;
    8 G7 q: l9 ^9 }5 O% V/ C" |
  7.     // socket连接后以uid登录  J) p1 v" o: Q# s  V% Q: Q/ j
  8.     socket.on('connect', function(){
    . [/ a# B1 k. S2 W; G5 \& f* e+ a
  9.             socket.emit('login', uid);
    : i1 o0 k" V9 J6 i. i* j. [
  10.     });* i. K/ a* l$ K( a" I; F0 o+ |6 {
  11.     // 后端推送来消息时  K: R: `4 v: F
  12.     socket.on('new_msg', function(msg){, t5 [! S+ U3 U$ M9 j6 F
  13.         console.log("收到消息:"+msg);: m1 X, s3 {5 l/ F, I- F
  14.     });' l4 ?- O4 W; o- Y! S0 x8 `$ z+ o
  15.     // 后端推送来在线数据时; W7 L! q$ |2 t" P
  16.     socket.on('update_online_count', function(online_stat){, [) X# D4 V' m! p( u( F
  17.         console.log(online_stat);
    - c0 d7 [6 ?4 U2 o/ L/ m" t+ k0 W
  18.     });2 u2 S2 e. N; m+ Z! p9 ^) ~
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ( f7 C) l% d3 u2 \. l
  2. // 指明给谁推送,为空表示向所有在线用户推送( L0 C" V1 w# j" B* r" E  M
  3. $to_uid = "";0 r- P7 Z2 B8 t4 B- Q8 s
  4. // 推送的url地址,使用自己的服务器地址) X% R" L/ E4 I0 \% I
  5. $push_api_url = "http://workerman.net:2121/";8 Q& [( e: _) e
  6. $post_data = array(
    ; w( _& L/ d7 a8 Y
  7.    "type" => "publish",9 q. R; T) x$ C+ a( B5 }$ n- Y. W, M' d
  8.    "content" => "这个是推送的测试数据",; A$ g7 J! U/ l/ K8 D
  9.    "to" => $to_uid,
    ' ~  g) `% E% ]
  10. );9 D( U/ G& C1 k1 h0 `0 o
  11. $ch = curl_init ();* u5 v7 \& ], ?$ H0 ~
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );6 `# W' U4 \( u1 H  y6 a# n
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    & h8 v3 c( n- b) ^! H" |
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
      s0 \2 d, u* I% u7 [
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    4 G( F* \8 d; g# d
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );5 w0 _; r3 C) o- ]' \
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    8 |2 u# i9 y7 @+ i& F
  18. $return = curl_exec ( $ch );) j& j4 ^, u& @" n/ h; B: p
  19. curl_close ( $ch );
    7 B2 w" K8 B  B" t8 p+ Z$ Q7 o
  20. var_export($return);
复制代码
3 c" M" j% i  f

; W8 U% o# k% o  H# G4 q1 J
2 B6 G0 W5 J: J' K! g: _, x0 g8 ^" @' z, I
5 A, {) q9 e/ f* D: i8 W9 r
本文摘自 https://www.workerman.net/web-sender* e) X% Q8 B2 y2 |
2 J% z" i# r  w+ Z* l2 r' W& h

6 P/ ?# I1 g4 m3 w6 Y; c8 |, i# @
# l2 ^1 \% |: y

% h; y$ ~' t7 {2 `4 ~. x1 E3 E8 w6 G7 T) s( q
8 e1 K- E5 _9 V" i# d0 t( ~
4 K/ e: R! W3 L  c

; e3 X% p# B- p& w4 e* R5 P
0 E3 W/ B) n9 Z( p

; m$ a: k4 _' e& j; B4 Z

2 ]6 H7 w! A# ^3 ]) l0 M
: Y' R3 ]0 T. _- w$ m& r3 Z. P( x5 n




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