您尚未登录,请登录后浏览更多内容! 登录 | 立即注册

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 14625|回复: 0
打印 上一主题 下一主题

[php学习资料] WEB消息推送框架

[复制链接]
跳转到指定楼层
楼主
发表于 2018-10-27 14:07:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

特点:
( J2 s) @: C( k9 C
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    6 }* `7 k: ]6 t8 ^
下载WEB消息推送框架3 A: O+ V5 w: i" f3 v0 w/ B1 h
/ R: d- j+ B! t8 |. P/ k) S' u. O9 }
   下载19472次
; I( v% s( g9 ^; B$ Q- e

# n( I( q" C. a0 [' e# K0 F% r0 uPHPSocket.IO开发手册& K, o/ r9 M  w+ z* Z( g
. e  @* m4 P" @+ p1 _6 s' l6 b+ t
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
! E. G( h( F8 g" M( g其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


* [: w& v0 U1 d效果2:
9 Y# b- e  o7 z, }

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


# [: ]: D+ ^) T* T1 \. C! a6 X) ]0 _7 \* E
安装启动

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


8 G9 M% Q( {* I5 ^0 Y# b; R: H

  v4 }1 j0 V' a; |1 R
' A% B3 O' V3 D& X% q* Z- v9 Y
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    : G5 H$ b6 Z6 P
  2. <script>; u/ E; ~6 g& o8 u
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    ) O( s4 o/ [1 a" }# x( b
  4.     var socket = io('http://workerman.net:2120');; s' {2 d1 w0 n0 m: m3 m) K- r
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    . u* I" u' o  X3 o" q% H
  6.     uid = 123;
    . T% b* x7 l4 U$ ?( n9 c! K' C
  7.     // socket连接后以uid登录
    ' O& g1 G! u/ t/ A9 m
  8.     socket.on('connect', function(){3 a# N  r. E6 w0 s6 R
  9.             socket.emit('login', uid);
    3 q7 U; u$ J0 k
  10.     });
    # J' A% |: e( m2 c) |
  11.     // 后端推送来消息时9 P" k, T# e# k  o+ Z1 v& ^
  12.     socket.on('new_msg', function(msg){7 ?& ?; O& E& I
  13.         console.log("收到消息:"+msg);( b/ p" K& H/ d  _. v) Q8 _
  14.     });9 u& Z  |. F3 C
  15.     // 后端推送来在线数据时. l- R2 T+ ~/ C+ o8 a+ {3 T0 k
  16.     socket.on('update_online_count', function(online_stat){
    % w. O. V' U% Z& ^$ d
  17.         console.log(online_stat);
    # h! W& t5 C  V1 T+ e+ d: I
  18.     });
    + Z/ I' w" i; O, v
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    . g3 g8 {8 }6 r: D' _- ?: _
  2. // 指明给谁推送,为空表示向所有在线用户推送
    ; \1 G( Y3 q5 c3 t# e4 l6 j
  3. $to_uid = "";% m# \8 u  l( x. d
  4. // 推送的url地址,使用自己的服务器地址
    & l% O* j7 K8 S3 w: Y- k9 [+ {
  5. $push_api_url = "http://workerman.net:2121/";
    - H0 [3 H& F  G4 E7 R
  6. $post_data = array(
    ' a* ~# t/ M0 I6 U+ ~4 x  m9 r
  7.    "type" => "publish",
    0 \4 ~$ ?& a1 z; z
  8.    "content" => "这个是推送的测试数据",2 X+ i! F. G$ N  |2 E
  9.    "to" => $to_uid,
      a% Q' x) g2 J
  10. );; v5 P, W( j/ X
  11. $ch = curl_init ();
    7 g) X9 \& D2 m& T& p
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );. e0 O6 I6 H: b( d, o" w+ H, G/ G
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    3 }( h- U4 W& r2 N- Z0 l
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );! U1 S7 G  \+ s- D% `9 Z
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );/ L0 F% B7 J4 n6 K; k2 }& w
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );, G( |3 H6 F  W$ b
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));/ T/ r( m. P. o3 A7 z( s  s
  18. $return = curl_exec ( $ch );8 C4 T" w8 Z5 u
  19. curl_close ( $ch );; l- J8 L" m$ H! z
  20. var_export($return);
复制代码

/ i, A- z$ q7 s/ i& t2 S1 m
1 P1 ?. B1 R) Q% k
8 d* a* y+ ^7 x( y1 J1 n! \2 A" m" G+ M

" W$ a" ~  x2 B1 h! L" w0 }本文摘自 https://www.workerman.net/web-sender: W& [) o% e" |" Q, v! [& w
, y3 A9 T. J# G! Z* `' r. F+ I
; ?4 n9 u7 U/ e% g3 S! |* P3 Y

9 R. q& i5 c, Z3 E8 _; Z, s! `- e* K) n
% e6 Q* i/ s, v, |* z
3 e: |  \+ g5 I7 Q! F' c% n

. ?2 j' b0 z# _( H" D5 Y) V
5 j" N5 x- S9 r

0 v/ d3 g3 p/ K# _+ b
3 J8 n" g% a4 o6 r1 B9 Y- b  o  m

4 d8 H1 E1 m: M: J9 n; v. x" E# r
0 i8 Y% @4 m- k

- f' u, n2 E0 d8 ?4 Q% t# _9 F2 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-17 21:49 , Processed in 0.060769 second(s), 23 queries .

Copyright © 2001-2026 Powered by cncml! X3.2. Theme By cncml!