cncml手绘网

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

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

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

特点:  F1 ^% y! V' g# n
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 1 e0 ]5 q1 K& ]; P: r, s& H4 @4 z2 j- V6 C
下载WEB消息推送框架
# v3 t. S" r. q" h2 i

& L$ q0 D  t' p
Fork on Github
  
下载ZIP压缩文件
下载19472次
; w. _$ ?  o5 s! N

+ F2 m4 o( ^1 v9 Q$ `1 p* kPHPSocket.IO开发手册& h! A. T! t+ i3 Q
0 _  k; ]2 F4 a% c* x
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
. G" G! F$ X# T+ F  j9 V. [0 C4 F其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

0 Z+ x1 P! i7 v% P/ Y& k$ G
效果2:8 o4 B5 R! T4 X( M% G

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


" [9 p, ~* {1 @0 I* t
, Q0 g1 |2 l8 P2 B安装启动

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


- h: T) l7 j7 g, V% A) @. z; [

4 u' X5 ~$ Z' @% I( Z

1 C/ m/ n) z( j& }7 `前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    7 a, z; ^; C" Q, @; D3 b3 p
  2. <script>
    1 y% C9 ]. u3 p: r
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    1 K( B3 L! W6 }! K( y
  4.     var socket = io('http://workerman.net:2120');/ |3 M8 n9 s* {4 u7 `0 W
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数2 }7 Z' V$ n5 d. U7 d& O# q
  6.     uid = 123;
    : X# O: J- s- \" E/ h
  7.     // socket连接后以uid登录
    " A3 v7 k: R- Z
  8.     socket.on('connect', function(){5 w$ ]* L9 Q" h& q% f9 ~; W
  9.             socket.emit('login', uid);, o5 Z( a/ c8 x) f1 G5 J2 q& y* ~
  10.     });8 h9 m" q/ v! ]
  11.     // 后端推送来消息时: V% a" C, S' Z, r# T, y8 p
  12.     socket.on('new_msg', function(msg){
    % C7 h/ y( r4 q  {
  13.         console.log("收到消息:"+msg);- c% y7 ^2 B2 `& j' S
  14.     });
    9 Y, ?+ \4 N" A
  15.     // 后端推送来在线数据时% O3 L  A! @; r0 d2 @- y0 O
  16.     socket.on('update_online_count', function(online_stat){$ e" ^3 J, t* G' w& t% }! u7 q( q
  17.         console.log(online_stat);" l$ a5 P/ d/ @: `$ L' d; D
  18.     });  ?: r+ ~. ~0 \
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ) W" H  k$ F$ M5 p
  2. // 指明给谁推送,为空表示向所有在线用户推送5 v9 M1 B/ r- p% E, ~' |- Q
  3. $to_uid = "";5 t& B* G1 N0 W
  4. // 推送的url地址,使用自己的服务器地址
    4 W+ ?  c4 {; Y7 u
  5. $push_api_url = "http://workerman.net:2121/";5 i2 J- C/ F" y8 }; H" i
  6. $post_data = array(
    % d/ P7 n* v) L% t  {- R# Z
  7.    "type" => "publish",6 h3 B; q; ]8 }) X" p( J& M% M% p: f' [
  8.    "content" => "这个是推送的测试数据",. ~% v7 Y( x: P, ~. R5 h& q
  9.    "to" => $to_uid,
    ; b( E- z; V7 Z/ E0 \: V
  10. );& w  h" f% Q6 w' \% p4 r- ]
  11. $ch = curl_init ();  \; y7 E! `" \, g1 e7 \4 D1 ^6 g
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    # ?" X& t8 i* c" q  L$ g* g$ Y
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );' \6 o8 b/ R9 G% r9 Z
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );! m: J3 P$ Z7 ?+ A5 x. ^8 H
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    3 w, C5 P6 a. J. Y
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    . u5 N/ e1 B$ q0 ~* G
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
      {& E6 T6 S: `- H4 _- D. B
  18. $return = curl_exec ( $ch );
    6 W* T) V% F9 ?
  19. curl_close ( $ch );
    - L" A- T- S% k# |$ z
  20. var_export($return);
复制代码
6 A# T  a& [  E* K  X

+ G8 y$ f7 B/ s; d
1 ?7 F/ E9 y0 f2 \+ }$ N* e
  t, i% g/ u* K, Y( u
! _( S0 q: r# z6 e: u$ B; H
本文摘自 https://www.workerman.net/web-sender
9 ~& s( m3 l( ]! ?6 _: R/ `! @# ^5 t  i

; ]4 e' H) d: T; K( N, u+ Z' u
* D# s7 Y: @8 Z& D7 {# u! E, a8 R& o" y

" X9 _+ [. y' z$ l* x2 W3 K9 V) ?' c0 L  O( W
& h* B  O7 n% W0 m
* I4 l( x. u% J. O

  G! j8 {9 N6 s! F; d% @" O
: D4 _+ L2 w0 I7 ^7 ^8 g

" m4 T  o4 U  c1 S3 I; y9 X6 J
% B9 r: w( t; [2 Z! l# A8 }% N) F( l

/ B8 x6 j' H- w# D" s




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