cncml手绘网

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

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

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

特点:
' U( ^* G  f1 l0 p
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    0 W7 P4 E5 l* r7 `# L3 ]2 X8 T
下载WEB消息推送框架
+ U8 S( o  c- C: I  Q( t1 G

( W! Y  u$ `: p6 }
Fork on Github
  
下载ZIP压缩文件
下载19472次
" ?, Y4 z0 E! l' Z+ A7 O
! A  G6 [4 h7 ?0 T  J
PHPSocket.IO开发手册. ^6 w* q  o+ B) W- W2 ~' H
1 E" Q* O- g* p! _' D$ Q* C+ G
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
/ _6 t! M8 L  A; v7 O5 P2 G其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


' _  o* Y1 `) y效果2:1 B( V4 i7 h; o0 n) ]8 c( @

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

8 {/ c$ [* U' ~4 E) o' C. s
* _" Z+ N& }  R& 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


& f5 K) g# P2 ^$ M9 Q

, m, z1 S8 x- e3 n6 Q) l) M/ x& N" U
& |3 G, x- L  _8 X
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>8 a! m7 w8 P# R7 @
  2. <script>
    ! D% k, t. f) D2 F3 t/ T; v/ g5 W
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    6 `& w5 V6 |3 m# l5 u: C
  4.     var socket = io('http://workerman.net:2120');5 P9 c* G) m* I% z# `& T
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    . m1 T% y7 l" V. d4 E! R! A) |* Z
  6.     uid = 123;
    ) x, Y# S- v6 |" r/ [' \! s
  7.     // socket连接后以uid登录& I1 e. I; X' e
  8.     socket.on('connect', function(){* R8 A5 M% ]$ Q& J
  9.             socket.emit('login', uid);
    " G; T4 H- g% o: T2 g1 f
  10.     });' B/ E% V1 d' a9 `; w, [( _2 h' }. M) U
  11.     // 后端推送来消息时( j& B1 e/ p8 \* u" A) Q
  12.     socket.on('new_msg', function(msg){  q4 Y& ~2 h4 C' I
  13.         console.log("收到消息:"+msg);
    4 {8 y0 o& `# N2 |7 d1 |6 `
  14.     });
    / H0 h4 b" t. [5 m# N3 Z% r
  15.     // 后端推送来在线数据时
    , n3 ]" {$ P$ A5 `, t
  16.     socket.on('update_online_count', function(online_stat){
    : ~% C/ N. g. g+ J( ~
  17.         console.log(online_stat);
    2 ^; d7 n, @# S4 z5 A: G" `4 G6 X
  18.     });
    ; ~8 x7 d) n# O; `7 ?
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    5 M4 e) r" ]7 e! L  C. D' o
  2. // 指明给谁推送,为空表示向所有在线用户推送
    . S/ [% J3 [9 b: {
  3. $to_uid = "";( N5 s8 t' V( l6 v& H5 I
  4. // 推送的url地址,使用自己的服务器地址
    ! N- |( D& l3 i4 K- k! V6 w
  5. $push_api_url = "http://workerman.net:2121/";6 M/ Y8 j' K: y; }0 K
  6. $post_data = array(
    4 K# ^1 Y8 u1 Y) o& _/ [# Q! [) ~
  7.    "type" => "publish",
    4 l3 C: Q! z' J: L" w
  8.    "content" => "这个是推送的测试数据",4 }5 b' r0 a. O
  9.    "to" => $to_uid,
    - i9 r6 n6 ~3 k$ s) o+ L
  10. );
    6 C4 [( ?* X0 f# F+ j- Y2 d
  11. $ch = curl_init ();
    * f6 ]0 S' W1 b
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );" E1 Y1 Z6 X" Y
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );4 ?  }, P# [9 s. a
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    9 w+ r8 B% v8 G2 ?$ s' A
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    , z/ \( a; `, i
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    - _* t/ y& Q+ x8 q. I& C
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    3 F4 T1 X6 L+ Y  D) r
  18. $return = curl_exec ( $ch );7 t0 Q2 d5 F5 ]. R$ j% Y
  19. curl_close ( $ch );( I: a* A8 V: n. Q! _4 s
  20. var_export($return);
复制代码
0 @; P; _  G9 g+ l4 d( d
( S/ l. A' ?# g8 L' O0 @
& w4 ], ]! p$ ?2 \8 w
! L/ Z, J8 }7 w5 M) {

3 Y- g/ x& ]6 w4 n( M0 U本文摘自 https://www.workerman.net/web-sender/ ~1 {8 V. m8 T  P/ ?& ~

+ N) J$ O  G: z1 }  J+ a5 p6 F/ y  W( W# T

8 `$ T0 w3 \: y  l- f: I% D2 ^* v2 q' z! R- [
$ S/ p- v: _" G1 K& t

0 u: J- {) l5 f7 L

; [" m: c2 `. n2 b  Z! L0 h

5 b9 _! D5 t$ i& z
& S7 U8 \. n8 Q8 u5 r$ R# l

9 i. n. S. Y: w$ n7 X' n& z/ @
3 A3 [  P8 r2 v; Z

/ Y4 l8 |9 h9 @& @2 R
. t, j! B7 s2 ?( i




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