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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
4 o$ s' f  l6 G/ V, ?
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) , U; f' p* S! W
下载WEB消息推送框架
4 j: e* c, \' c  h! f. _
8 I5 `& X/ h5 J  v4 @" @, W
   下载19472次
4 L9 G, W$ _3 J  Z5 L
# q, }# E/ u' S. H
PHPSocket.IO开发手册# g, m, z$ O, V1 c3 N

  E$ o; @# ^4 v* L- r+ n
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
; a1 Y: G) f$ T其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

' T" N; }  y# p+ q: J% v0 s9 y
效果2:
6 _/ X/ Z. }. h: Q" m

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

3 W+ h& e- D# t; R
4 G& g  e2 h2 C4 l) Y) 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


  ]% I7 n# J+ z! l9 Y6 I  c


3 }( |  X' a- r* M6 |. V+ W% O
' L7 y" B- |/ ~8 ], F% a前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    ( K- k" [. T9 ~; i
  2. <script>2 l# J! W  z4 ~. }- E  U6 T
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip. k! B6 J$ S% I. T
  4.     var socket = io('http://workerman.net:2120');
    ( y# P6 O: O- ^; J, z# {* w
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数6 O. I% _2 h' W, y
  6.     uid = 123;
    # b/ s1 Z* z  |) H2 o
  7.     // socket连接后以uid登录
    * Y4 E" g, {' E9 e, {
  8.     socket.on('connect', function(){
    / b& H& h: i& y3 @( J, b
  9.             socket.emit('login', uid);
    / o% [! P0 K+ G7 h! C: Z
  10.     });0 S3 o8 u1 w6 f/ A( L; J: f# }+ a# o
  11.     // 后端推送来消息时) V! ~8 c9 G8 {* ~4 Y
  12.     socket.on('new_msg', function(msg){
      ?0 T6 N, @5 @, p5 G% ~3 g
  13.         console.log("收到消息:"+msg);, k$ f' l/ y" @5 ~2 R% b, ?2 P) O
  14.     });0 o# {* C; v) V5 h9 R3 l8 V
  15.     // 后端推送来在线数据时
    3 T2 l5 v0 b5 T! v
  16.     socket.on('update_online_count', function(online_stat){8 m, t! g) j% }- N# {$ y
  17.         console.log(online_stat);3 W- i, e3 O. g' N3 @
  18.     });
    1 X8 e! h' e" f1 O7 E
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php/ q% a3 d7 \: ]% l2 z
  2. // 指明给谁推送,为空表示向所有在线用户推送
    - |+ l% X# |& [- q
  3. $to_uid = "";. m% q8 b/ ~4 b2 c) N4 N
  4. // 推送的url地址,使用自己的服务器地址1 _7 h2 n8 |3 g% _' K5 _3 e$ G
  5. $push_api_url = "http://workerman.net:2121/";4 b& s3 i3 @5 n
  6. $post_data = array(
    7 Q0 L" F4 J3 q
  7.    "type" => "publish",5 z4 s! V' M: B
  8.    "content" => "这个是推送的测试数据",! R2 s. }3 o# V5 f. h( i
  9.    "to" => $to_uid,
    * F6 I+ ]& D  `7 _% a7 @
  10. );6 p/ h/ g/ r: y1 T: [
  11. $ch = curl_init ();- ~+ E' b+ F' U) E
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );/ N& G+ ]5 A; {
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    2 U) @# F6 [3 g$ p0 U7 h6 W# ]( c
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );2 V; q8 {4 c* L* A* o
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    2 i$ u) h4 ]; a( m
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );* ?( B, c  L8 ]1 `$ d0 q4 M
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));: K2 L6 o8 j: v& Z* x# w: }  d- A' v
  18. $return = curl_exec ( $ch );8 ]! O3 z. X8 W6 q% L. a" i
  19. curl_close ( $ch );/ O" p# t8 v( v  G1 B
  20. var_export($return);
复制代码

: ~6 l, j1 G* r$ d
" m" e/ d( j5 ?, T
0 y2 r, ^9 i! B6 Y' E/ f7 N) T" r' F) [" u1 t1 K
% `" |( s0 U- l1 P/ A
本文摘自 https://www.workerman.net/web-sender
$ y1 `1 A* t' J; x8 R4 T( ]4 ?# s" i) R/ L7 s" J! ~

$ T" H/ f8 i+ g/ T; s
9 J' V/ v% V$ t5 y
7 q3 t3 O1 I2 e( q$ u8 o2 `; S9 a+ ]4 d$ p! O) P
+ ]' @  b8 ~) x" i" m
5 y# f; B. _+ A$ P9 r0 C0 F5 ?! {( `

3 L* F9 ~- b# h0 a6 w% y6 a) o* w: P

7 W! V: G% z! n' p: G( ^: P) G" e8 ?& D3 f0 _7 @* u$ Y

8 Q" D- D3 p; Y9 \
; O. U. g8 ?  C& `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 01:34 , Processed in 0.154654 second(s), 23 queries .

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