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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
5 g! Q) |' {$ _9 w0 d
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 0 r- S: q2 f3 e  d/ l4 p
下载WEB消息推送框架. a! |4 v1 j* X0 k
. F7 \' Y  z8 n5 T; O' u) Q2 U7 |
   下载19472次9 o* C) H( P; M8 [
$ S% n" s) J- `2 n; V/ O# R7 n/ d
PHPSocket.IO开发手册
5 d# C, Z0 ^+ {

  w0 c4 k+ x, u- |8 A
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content2 a  g, @5 L8 N& u) K
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


: N) Z* X. N; n效果2:
" C, D& h) K" R

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

. D; F/ V3 f. ^$ W2 T+ q
" I+ [4 q. C, i; i  I; h9 A
安装启动

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

/ J# [! X7 Q% p$ O: D2 S


  ~+ _' _2 S1 I6 |2 V! u/ [/ R2 f7 H. K
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    7 ]& K% G* H) B
  2. <script>! z7 b" d, J- }$ C
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip1 c6 k  i" O, k8 _
  4.     var socket = io('http://workerman.net:2120');3 s1 A( F( ]( r. j% B( y3 ?. d
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    # w! O7 ^% h* n) L7 A$ r9 J
  6.     uid = 123;3 l( C( G6 d- {
  7.     // socket连接后以uid登录
    + \( }  H) o" x" F9 v8 J0 q  [; p
  8.     socket.on('connect', function(){9 ~8 y. f2 r6 I0 Y0 Z7 P4 h* F7 |
  9.             socket.emit('login', uid);
    8 c- R5 s* c( C/ H+ m: l
  10.     });- f/ q& ^, a& J$ d2 ~3 V; h) W4 p' }
  11.     // 后端推送来消息时$ ^7 b% `, h5 n% W5 \" t2 E
  12.     socket.on('new_msg', function(msg){
    4 s% L$ Z3 b2 [4 A( B
  13.         console.log("收到消息:"+msg);
    2 X& d* _/ K0 k8 o# ^# }
  14.     });8 ?1 m. g& t- X, x/ s
  15.     // 后端推送来在线数据时
    : C1 U& t- U4 @0 N3 x& C
  16.     socket.on('update_online_count', function(online_stat){0 t% B, p% x2 L6 K, f5 Z
  17.         console.log(online_stat);8 W. s( w( f7 i9 g& [  f
  18.     });8 J" Y5 `) m4 p# B* @5 H6 o
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    ' g' ?$ W8 g! f+ n& w. Y
  2. // 指明给谁推送,为空表示向所有在线用户推送
    " A( O' k4 O" T2 |* p7 H' c/ B
  3. $to_uid = "";, Q6 w: K, K, w  p3 j& y* h
  4. // 推送的url地址,使用自己的服务器地址0 _" l- f* |# a+ R8 Y  z/ ?! w3 Z6 q
  5. $push_api_url = "http://workerman.net:2121/";
    2 L' `- E' x; n; G
  6. $post_data = array(
    3 ~# H9 R0 I! V- ]
  7.    "type" => "publish",3 e3 c. |( h' f# }( o
  8.    "content" => "这个是推送的测试数据",% B7 K4 z' O$ _
  9.    "to" => $to_uid, % s0 T7 R% [8 t( [- R2 z
  10. );5 l( h& `+ E& f& p/ y" P
  11. $ch = curl_init ();7 L" K( Y. J" ?/ h
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    " D5 L9 ]$ J/ Q) X+ R
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    5 \9 n8 M2 U  E( z0 j6 f0 {. @0 q
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );0 z, u$ j- v, H7 B$ C, `6 o
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );1 h) \0 h/ V3 ]& r5 ~! h
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    , c1 Z  _: b) K2 U
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));" M; J' W/ u( x6 R( _& c" u
  18. $return = curl_exec ( $ch );
    0 x8 w0 D) ?+ P* e- ^9 F  v
  19. curl_close ( $ch );
    ! k3 t0 |8 k: G. n. f
  20. var_export($return);
复制代码

* Q4 h9 M$ n3 ?0 R1 I% A) H6 V( v) f0 ?+ N: D

9 Q0 Y$ y5 ?" f& k+ {- {* ^7 a) W' @; f9 M& ?

  U; {- E* A8 e本文摘自 https://www.workerman.net/web-sender
; V$ ]9 E9 ?! o9 m3 I5 V- g- I$ i3 A, b3 W, A
) m* a1 C1 J9 v$ s2 U
, D$ d! W; I! r# H7 ^& `

+ }6 q  K" ?) {8 [7 {) \. W) H/ Y& L6 U( ^# C2 N9 ~% \' f& h

( s- c3 |( ]8 O9 G" u" u

; b4 b# Z8 x! `+ I1 j
, i6 C5 x6 x5 S" r, F" ^
# K* {/ T# w9 O2 _# W$ ]4 `
5 c1 f* ^2 e1 z; Z

- Q: S7 ]5 e+ e5 N* q5 p
" ?- P0 b# e% t& u% X$ P( d3 Y

& K3 a* l$ ~2 O" @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-9-21 11:23 , Processed in 0.162381 second(s), 22 queries .

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