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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:, m$ e% Y8 m) @% t$ d2 j
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    9 Y' A( X0 ~3 D. X4 J$ v
下载WEB消息推送框架# t' {2 }3 d6 U6 L7 ~( {3 G
$ E4 R+ Z) E7 v
   下载19472次$ `5 \8 X: I. f6 ~* V7 J- X+ f

9 r; k, H1 ?' U# c$ k# A0 CPHPSocket.IO开发手册. i7 K% Z0 e1 C& |0 _  _
: E: }3 a1 i- D# M) m
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content. @- d# a0 B- x. U9 x
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

% y" V2 C% G' h6 C5 I: g$ G
效果2:
% h8 E1 k0 T4 \" [

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


" V0 w& N7 T4 j8 Q/ W( c3 Z3 |  |9 [1 F
安装启动

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

/ q5 I( a% M2 y4 H

# U* G. @8 u% I, [
5 o8 j+ m/ K& X* j0 p2 Q
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    * d1 E$ k6 U. n$ w6 c1 O
  2. <script>! A8 o2 [) o8 I1 Q" E+ r
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    9 w1 [2 t/ S- Z/ S
  4.     var socket = io('http://workerman.net:2120');
    ; D- Y" G+ |9 c
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数0 D. R* Q' o0 }) d
  6.     uid = 123;
    + h! ?. b. p) S: l! f
  7.     // socket连接后以uid登录: C& [7 W: J0 B$ G5 w
  8.     socket.on('connect', function(){" w* ]9 c+ L$ |
  9.             socket.emit('login', uid);
    - l1 i2 `6 W. ~: m- Y- W2 R, K
  10.     });
    & P" {0 T7 a0 `
  11.     // 后端推送来消息时  H; D5 D1 q8 F. P
  12.     socket.on('new_msg', function(msg){! T0 ]+ l2 L& k& j7 g: Q
  13.         console.log("收到消息:"+msg);
    # j/ B+ N* D; I1 F, h7 t% Z( u% t4 z) E
  14.     });' T- @' V, z  {- H! u4 g
  15.     // 后端推送来在线数据时
    / T, B9 {8 }0 Y+ x
  16.     socket.on('update_online_count', function(online_stat){
    / }9 H1 _8 l0 I1 T7 |5 N  h
  17.         console.log(online_stat);
    : p3 a  l( s3 J
  18.     });
    9 \1 T# @7 F" r1 q& l2 [4 }2 ?
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php% I4 j4 e9 k# s9 X* B: k
  2. // 指明给谁推送,为空表示向所有在线用户推送
    ! T/ H7 f; U! A
  3. $to_uid = "";& }/ U' h; O! Z9 D  k$ C
  4. // 推送的url地址,使用自己的服务器地址
    ) A2 y- g5 y  p: `0 c; [* v2 I, ?
  5. $push_api_url = "http://workerman.net:2121/";& l2 t" V5 e7 f
  6. $post_data = array(
    " v6 e0 Y- l* E1 X' w
  7.    "type" => "publish",0 E, h: P/ x; h6 F* R
  8.    "content" => "这个是推送的测试数据",
    * W- a: @- i2 h  X9 N% v, X+ J
  9.    "to" => $to_uid,
      l' c+ s2 z% B% n: d; R
  10. );
    ( ~4 \! s2 r$ z# ]1 x
  11. $ch = curl_init ();! ^  r$ V& U: c5 t: R
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );3 z  _9 @. x; ~: l
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );; D1 A, S" }9 G9 @, B. }# z; S
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    : X4 q$ R  c5 a, |1 f
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );# K+ O( B) \  x% l% w7 L
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );, ^; t3 S! b. o3 a
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));3 f! _% i3 Z' `7 U( P; o0 L9 Q; a
  18. $return = curl_exec ( $ch );$ p3 N" q8 o$ r! |# O1 Q" o8 z
  19. curl_close ( $ch );( z& k: p% ~  t4 D
  20. var_export($return);
复制代码

/ N' u- s- O$ X/ }7 u; e1 V/ x; _' e

. {4 y/ v. V: l6 p+ B! Q- \
$ ^1 J9 O1 R) H5 [: Q' p! i

1 ^7 w4 B- n1 w) U: A# \本文摘自 https://www.workerman.net/web-sender
& V7 s$ X. b. G- T4 C$ z* i* a) c

: i( w/ m% v& q' W  b1 X- v: d2 h, L6 `, G0 M

3 X( P. _& Z, B3 n7 f" ~& W$ O7 N
6 @, ~+ f  \  T1 H; @1 G$ w, O  w" y% f  k1 R8 @2 K! l
- S! t' i/ @7 w, m0 X4 C
, s5 {) Q% }3 d+ K9 {9 F
0 ]/ m8 A- Y: ~8 Y# B8 M7 T

  Q- `1 v4 J. w% ^6 ?! t. K3 j* P/ Y5 G9 q' R: e

! X2 R) B2 z1 p' N* I# C* H& w. j/ Z2 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-3-16 17:27 , Processed in 0.060949 second(s), 22 queries .

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