cncml手绘网

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

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

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

特点:
+ j( y5 p/ J, f5 j3 I
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    6 R6 X: T2 @6 M. o
下载WEB消息推送框架0 b: s8 ?3 R  n0 S9 `/ N

: J: t* Q2 c+ V/ G- K" ~
Fork on Github
  
下载ZIP压缩文件
下载19472次/ ?( x' z; ]- P* j' h7 o9 c, r+ _9 q
" y: @: L* s; `
PHPSocket.IO开发手册! P3 U2 U1 V) N# @
* v3 ?3 H' M/ w
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content7 F  }. r  y) O/ E4 O3 `$ i' n
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

( J* E8 ^7 C; @% U" R
效果2:( u' {$ W! P) t! ?' S6 M# l$ x2 u

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

1 E- R" n" d5 i1 F
. [: x% @% P! G& @2 I6 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


# ~/ m  B) `" N( w


1 \0 C3 I- ~6 X. D! z4 y" `+ O; K$ r4 ]8 d' y: ?% F9 D  z* c3 [
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    ( a: f9 Y% s3 j1 o# f) B, T
  2. <script>
    ! o! l: b7 k. L7 n" o# _, f' q
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip) W5 f, e: ?' b8 P0 l$ q
  4.     var socket = io('http://workerman.net:2120');$ H) g2 a5 C. Z" ^  J( X9 C
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
      q% M$ ^' l; j) F
  6.     uid = 123;% h; W6 l- O/ q# L+ c
  7.     // socket连接后以uid登录
    , Y$ w+ o! x# G; e2 ~
  8.     socket.on('connect', function(){% L# \/ N6 Y2 \8 @# w
  9.             socket.emit('login', uid);( K% |* x4 M8 H
  10.     });, o' R' U- p* m* C
  11.     // 后端推送来消息时
    : z& ?! q9 X; `+ D1 n+ q( T
  12.     socket.on('new_msg', function(msg){# Z& X0 ?8 @3 H: x) J% W' s
  13.         console.log("收到消息:"+msg);
    % z7 {: R5 t8 @, u  q" L
  14.     });
    ( s& e: [2 `. H7 Y; M- R
  15.     // 后端推送来在线数据时- i$ @& z$ }. L) X5 n/ C
  16.     socket.on('update_online_count', function(online_stat){2 T* M) L, [# l: b# L) I
  17.         console.log(online_stat);* d2 M& `/ X- y3 Z7 M. f( T
  18.     });
    + D2 O. u, {9 ]/ p+ X
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php4 y/ S% ?' C4 q
  2. // 指明给谁推送,为空表示向所有在线用户推送; i/ ^8 V0 w7 [# g; w& L! N; M
  3. $to_uid = "";! ]" K5 U0 N2 M' `. l- E
  4. // 推送的url地址,使用自己的服务器地址4 I0 [9 h- `: {, F! f& }, j
  5. $push_api_url = "http://workerman.net:2121/";) V) [% M* t$ p7 b. T
  6. $post_data = array(
    9 n7 b. S* n0 }0 I$ u6 e
  7.    "type" => "publish",: `  H+ F$ N& d
  8.    "content" => "这个是推送的测试数据",
    0 f( D6 m" j# t4 U
  9.    "to" => $to_uid,
    : x" M. U, W0 x& @4 Y/ \* R; l
  10. );9 b3 |- x& t- \2 B+ r
  11. $ch = curl_init ();
    8 ]0 Y+ t- ?% z9 `3 f: ~
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );% L# I, t! k8 z3 H. {: }! t9 q, \+ G
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    ' Q8 z! i; @' d4 W
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    6 Y. P0 J$ j6 x6 B- M2 B$ M
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
      F* ^% U9 l( @0 o3 ~5 i; E( [
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );+ I0 x: R7 [8 X" ?! P! c
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    " k. z2 t3 Q# D$ n! f1 f" D, X% u) m
  18. $return = curl_exec ( $ch );" y8 `+ A- r6 V  [1 ]
  19. curl_close ( $ch );4 m8 ~8 g3 x* a! @0 x6 d  `6 u
  20. var_export($return);
复制代码
& x/ X; r! y" i* Z5 b" A

  N  {- p, b! c7 R; S; \
, o# U: m. U7 s8 J& c: T  i+ T% U6 v/ O5 w1 i

; Q: n% J  J- C) a9 v; N$ J本文摘自 https://www.workerman.net/web-sender5 [0 v% H. i0 R- Z( X# r

) G- A9 n3 a" e7 a  {8 n6 ^1 ?+ D. E( f0 m
. w' E  s" f5 U: `: y6 W& w

) r& h4 i' Z9 Q( v3 G9 V# ~. N+ O
8 G3 s+ q  A7 p, L+ \- N; Z
6 X7 b  a: Q0 z3 N! g
! }( Z' t  v9 y1 b" e
/ @" z3 q- I, y
3 k3 G% y! l- I- J" P" w
5 q$ E4 |8 v$ W( L2 y4 k$ D

) n4 Q1 E8 K$ C* U- \

; J* l" J/ {6 {( Q3 [5 j9 c
- \, u0 S. X! ^% }; V* E




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