cncml手绘网

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

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

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

特点:
7 p; ~3 Y1 k, f+ U5 [
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) & [" h8 ^9 i3 `7 C% V. |' p1 A: m
下载WEB消息推送框架3 m9 L5 c# g; f" y5 c* z

1 L8 y1 d( N9 n% `+ D- p
Fork on Github
  
下载ZIP压缩文件
下载19472次4 x/ v# u5 @6 B0 ?% Q
) D9 S' V2 t( ~! c7 X- `: R
PHPSocket.IO开发手册7 e( `8 L- y9 p% j

1 U9 i) j% c) e0 b5 o
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content2 {1 D: j# Q6 V" W0 s" u1 s( u3 A
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


5 C/ q4 p5 Y1 W* k% u( u效果2:
2 ^" Z% i9 D1 H1 F: F  p' U& r

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

$ J" x7 o  m" h

0 \: f3 M) y' o" }' o" z安装启动

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


$ F. N( @! ?8 ^$ q; O. y8 d4 W9 ~


" x* P) g. z7 U+ `' O; I3 c5 ?4 p) |: d
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>7 w- L9 x3 s8 \$ T' d- H( J
  2. <script>! P& x9 _* N# ^* q
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    4 f6 g+ Z7 a: B% @) D
  4.     var socket = io('http://workerman.net:2120');
    0 o2 E' r* ]( k
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    ' ]& a# p1 D- g; w7 f
  6.     uid = 123;2 s: r. T9 l7 c
  7.     // socket连接后以uid登录
    * k6 N( X+ _2 R( c
  8.     socket.on('connect', function(){* a0 x  z- D( w3 b
  9.             socket.emit('login', uid);
    8 _9 K0 K: |& W, B5 [/ {( U
  10.     });
    - ]4 h1 T% G# n5 ]5 r; u6 ]
  11.     // 后端推送来消息时  j' @* w5 C. n$ v
  12.     socket.on('new_msg', function(msg){$ E' f: \# _  y' Q8 ?) k
  13.         console.log("收到消息:"+msg);4 J/ b! h3 n+ A. e! h
  14.     });+ s( E! |9 w9 I, {$ \: y$ I7 x
  15.     // 后端推送来在线数据时
    - @+ u  ?' X" k; I
  16.     socket.on('update_online_count', function(online_stat){
    $ ]" v/ `* z7 v$ G
  17.         console.log(online_stat);
    ' b9 i0 ]) X( p; x; L4 W
  18.     });2 `$ j  l! P2 v$ k
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    4 u% L1 l. U) K- M7 D; a2 p
  2. // 指明给谁推送,为空表示向所有在线用户推送) R+ \/ l7 P4 I# c" n6 s/ ]/ H
  3. $to_uid = "";
    1 ?4 @4 A+ z6 t
  4. // 推送的url地址,使用自己的服务器地址
    + t( ]) H+ O& f5 k4 j
  5. $push_api_url = "http://workerman.net:2121/";
    6 Y2 G/ d$ D! v) i
  6. $post_data = array(
    $ U+ b4 l9 d6 c& U4 D
  7.    "type" => "publish",
    ( S  O. \1 z- P8 P
  8.    "content" => "这个是推送的测试数据",
    * p9 i6 n# m* Y$ R' N; Y6 S
  9.    "to" => $to_uid,
    & x+ [, V3 x8 f2 k
  10. );9 w' x6 d/ Q* z: `2 t
  11. $ch = curl_init ();
    ) S$ V1 }  R) Z  c- o
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    6 r* \. N; s  d) b7 w$ g+ i; H: I( E/ \
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );( B. o8 O' y  f# b# ~  I2 r, }) O
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );  F0 G  C. Z* W7 [3 v3 w
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );- k* W, t) [" f- p  ^( ^
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    ' R" N3 \2 w! ~  t7 J
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));/ Z) A, Q0 P/ ~% A# D# c. i$ A) r
  18. $return = curl_exec ( $ch );+ b2 k' k" r" ]
  19. curl_close ( $ch );1 A% }2 l# O8 u7 U0 Q$ l
  20. var_export($return);
复制代码

, F8 X3 ?& x! ~: l8 }7 h! t7 q' R% D% J% {( c; {* v& y

, h- V7 c6 j( x/ r( ?, J$ I+ I8 V0 N1 T" ?4 W
* W. J5 J6 P+ _; G. @  v
本文摘自 https://www.workerman.net/web-sender5 d% @( E) B- h. R
& U: g7 \, ^6 w

* W# G! y) d/ G. h; M6 z6 _* ]7 T& |. q+ i; C6 a& ?5 b+ m

+ V) u+ W: X/ j. |; Z/ h
3 e4 n/ J5 u- v/ X
6 ?- F4 z/ w( B. S% B: k" c7 }
& ]9 q+ S; H5 l# E/ ?( Z0 H
1 Z0 s, g  O3 d: g% {9 f8 Z
5 t$ i3 p$ b8 }! I
% X8 P, H) q" f

  n7 T) Y2 n, @- h; ]

* R' Q% j6 v9 B5 P+ p) t) O# h( N  d- Q" S7 o





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