cncml手绘网

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

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

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

特点:! D! I4 V( G3 V, _- f5 w. |
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    " ~+ k7 p( A6 x
下载WEB消息推送框架0 t1 ^  k* l% ^. m0 m, a4 k

. n3 B. D# N5 n- N$ A: Z
Fork on Github
  
下载ZIP压缩文件
下载19472次
# x" c7 G' _# v6 f/ T% ]  i( Y  Z# X
6 I1 n* I6 n% k$ O! }
PHPSocket.IO开发手册
9 ]/ [5 M; G- M
0 Y5 a! L* V& H3 h
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content9 D0 y- i4 o& _8 k* x
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


2 \  E* |4 g4 n9 @+ c效果2:
2 e/ F7 k6 b! p4 q' Z

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

0 ?8 S/ w" p" x
7 q; d4 ~6 e/ o1 h
安装启动

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


, G+ X% u% n# i8 W' \  ^


; J- u1 g4 A: k5 ]: |! ]; `8 c) {" q2 g- z5 }& y+ f
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>& }2 v/ K/ i1 g% w  t5 B5 y
  2. <script>+ U4 i/ w5 H* |6 O2 T- F' Q
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip% Y  F  w1 f9 e, ?8 N8 d* l% u: S
  4.     var socket = io('http://workerman.net:2120');7 l( l) x2 t* x& a
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    2 s0 _6 O% }. ?: R
  6.     uid = 123;3 s3 ~0 O+ h$ _  B4 ~) G
  7.     // socket连接后以uid登录
    ; l$ g4 m4 @+ E/ R8 n: z
  8.     socket.on('connect', function(){
    & l. b, [) D- L+ a
  9.             socket.emit('login', uid);
    . E) F; A) ?& [2 m+ p1 g
  10.     });
    1 |: i  {+ o, O' l  E" L! o
  11.     // 后端推送来消息时
    : u* f! K) h2 R( T
  12.     socket.on('new_msg', function(msg){+ k  U7 R( W: |8 v
  13.         console.log("收到消息:"+msg);
    9 |& x0 }, [0 `2 k) }
  14.     });
    + A  ~' v  {& O% i3 g! I5 }' |
  15.     // 后端推送来在线数据时
    & j! {4 L7 ^+ u7 o/ g3 `# E
  16.     socket.on('update_online_count', function(online_stat){
    : x- @: O- L1 v) ^& b2 Z" S# b8 K
  17.         console.log(online_stat);
    % \- W( I  D3 d& S! P$ X8 d& Q1 u. ?
  18.     });
    . B: v/ A7 Z. V; h: \) V6 `7 O
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    - U& o+ }3 l/ Y( S0 J
  2. // 指明给谁推送,为空表示向所有在线用户推送
    $ F: q5 f6 E( A8 l
  3. $to_uid = "";
    , F( t7 E: @5 H1 \' t; w# Q
  4. // 推送的url地址,使用自己的服务器地址' u3 F8 a! `6 A% y& F0 R
  5. $push_api_url = "http://workerman.net:2121/";
    5 K; ?) c* P/ y3 _0 F% O0 o% m
  6. $post_data = array(
    5 g5 K9 h, ^: Z. O+ u* [
  7.    "type" => "publish",7 f% A: w. d! L' P0 V. I
  8.    "content" => "这个是推送的测试数据",2 i7 \' H. T/ l' h
  9.    "to" => $to_uid,
    # M! q- n. Q$ D* k! _4 ]
  10. );; D. A' s* v3 m
  11. $ch = curl_init ();
    3 Q, S- `; Y$ ^! v. x
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    . T- ~0 R$ d. v  a( x
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    ; ?. D; d" h, |7 y
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    * R' m% T: G8 C' t& o1 P
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    " Y8 _8 V& l2 v% j
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    8 V5 w0 D0 e2 z" i7 x
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));4 e+ W- y/ u. \$ N
  18. $return = curl_exec ( $ch );
    # u' e( i$ _) O( p, {
  19. curl_close ( $ch );: k4 @& s: e. M5 h2 P: F6 Y
  20. var_export($return);
复制代码
/ r- i6 p* b7 Z' I7 d; p6 Q% G& f! L
$ R/ S2 T0 o" [/ w

* X$ |5 z( R' h: Y6 f+ H2 N' D  {$ u

! E/ n6 N# S( {/ Q, g本文摘自 https://www.workerman.net/web-sender5 v3 s/ P3 ^3 s5 b4 N2 o

! ]5 y) Z$ E! x/ B5 g' Q  k1 x9 p. u6 U4 G* C4 A" n

. x9 P5 d% a. H3 X
$ A  D/ k7 V9 v: z8 q; `' r0 W" s8 L" C9 }! n6 P$ S

, l! N8 N  f8 C" |: {8 N
2 c! @' D& B/ M! v8 e! g0 i
+ m4 ~* O2 U7 ?" E
- h5 H0 {5 j5 W8 j

0 ^5 j% L( Q+ K3 g; E1 J
- V, |/ |& g* x9 }1 ]/ X% d5 o" v! V

( _$ i2 @$ `/ Q- A' q
4 b9 D# [- w3 P7 i9 K




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