cncml手绘网

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

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

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

特点:
  x. h; K3 o" w0 k
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) ' {& e& t6 C/ A  L7 a
下载WEB消息推送框架# a3 s# }( ~9 z. N2 s) N% Q
6 `3 }4 h4 l; L/ t4 e& X! e
Fork on Github
  
下载ZIP压缩文件
下载19472次
$ z1 [& O4 e& j+ |. q8 T, q

7 y; q; g* O# VPHPSocket.IO开发手册. Y  r/ Z" P; K1 D

+ A0 C7 t1 @8 ]/ `" k) F
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content0 l1 l+ a# I; \% Y! |
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


2 l! l5 |* m  t# ]9 X& \效果2:) m& |0 ~/ H/ G3 d6 D8 z# F- S

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


5 j9 v, I' g7 i; ~+ b. ?# s4 B0 x: Y2 u" P) [# c! X
安装启动

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

, Y9 r  d) C$ U+ d9 B! q

+ ^$ Z/ v/ e0 V5 e* n, C
/ R1 f, |! t* z2 T8 [# B8 p& }
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    8 G, v# T# I3 W- c* k/ ~4 F
  2. <script>4 b! w6 p" M% I( J4 B5 R# I
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    * w0 u4 }& ~: w0 c( J; B
  4.     var socket = io('http://workerman.net:2120');- t- n" k, Y+ V1 q; |6 r
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数7 q" i. [6 H8 L; H' N
  6.     uid = 123;! j. F; ^" f0 \7 F" K' C; X9 Q' i9 Q
  7.     // socket连接后以uid登录: g) s6 ^7 W1 F9 G4 w0 x" {
  8.     socket.on('connect', function(){
    1 P1 ~) r" E6 e4 l2 S, d. I$ I
  9.             socket.emit('login', uid);0 t  W7 M. e- s8 h$ U1 l
  10.     });
    $ l. C7 T. w% _$ t( P8 P9 s$ U
  11.     // 后端推送来消息时
    9 \, G# O6 H' A$ l
  12.     socket.on('new_msg', function(msg){
    9 ?$ [' t+ s: F/ [) D5 A! s9 d
  13.         console.log("收到消息:"+msg);
    4 ]7 N6 o5 ]  j$ h+ E
  14.     });" x/ E4 ^/ P" C- u
  15.     // 后端推送来在线数据时
    3 B- H+ @' X( v1 X0 i1 a
  16.     socket.on('update_online_count', function(online_stat){
    % B& a' a- i7 V9 M
  17.         console.log(online_stat);
    & O' s0 q2 p% `# H/ b: q- s
  18.     });
    - H5 U7 R6 z6 I6 L) ]' t. b; _
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php! q* f: f0 E: C+ ~) W7 _; V, S# d
  2. // 指明给谁推送,为空表示向所有在线用户推送
    - g  [" `) q( i, ^' a
  3. $to_uid = "";
    * V7 }2 `4 D/ R0 W4 Z8 k) G
  4. // 推送的url地址,使用自己的服务器地址
    . P9 S, B9 @* A4 y$ t* t
  5. $push_api_url = "http://workerman.net:2121/";5 L! t) o' Q) M4 i' o) ~/ L% e
  6. $post_data = array(+ J) Z& {/ g: e
  7.    "type" => "publish",
    1 M* `  `$ f4 U* i$ X! A' z
  8.    "content" => "这个是推送的测试数据",4 [- I6 E) Z7 |2 v( G8 z+ F
  9.    "to" => $to_uid,
    , s& Q  K/ R  m; J
  10. );
    : v& x6 \" r6 x; {  ]- F. c
  11. $ch = curl_init ();
    0 t1 D/ y! r  X+ r* c$ h
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    4 g) F8 P2 r, e2 z. b/ P
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );+ f7 ]0 v3 j. r/ V/ S9 J
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    : n6 ^! v( o6 F+ l! [2 u. v3 Y
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );) ]% v; g8 g5 E$ @, E, O! c+ c8 f
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    ; s: e2 S1 j7 N' I0 J) m4 s' l2 h0 g
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    * l  p4 I3 N( e8 `
  18. $return = curl_exec ( $ch );
    ' |; C6 h! e5 K9 ]1 s5 G# F4 F- |
  19. curl_close ( $ch );# Y1 c6 H! H2 r9 W0 e- {) \% }$ {
  20. var_export($return);
复制代码

  Q. }; f' ^0 Y5 v, h$ S$ L0 q$ i: ^! K# E5 t# E9 |6 x- |
! k4 g7 p* u  T' G+ ?& x

& K% _6 O8 j; I* M' ^
+ m% c. ], K8 d( L/ T% z
本文摘自 https://www.workerman.net/web-sender, J: D# v- h& A- [0 m! D- j7 L
' {: l* ?( @  ?8 U4 @( m/ h8 ?
6 N7 i) T2 ~8 h
9 E0 H: C0 S0 O/ A! [" L: l( i& I
6 N0 B( ]0 z7 g- D* N" S& I# f
- n7 s! i" s( U9 D3 z3 g
! c& k/ N" c* E

1 Y: h0 O) R& w' i& Q

! Z! P' s+ a& S/ j
1 X! J; |% }. a. y& m' x0 e9 x

$ \' D4 ?* G/ P0 c  c3 Q$ H! q5 J! Y! N$ ~. b
% U+ G3 H7 h2 P+ U7 A, d2 [
; c  ~/ N5 s" i6 `7 ^. B





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