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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
. Y9 }  d9 E( ^, B- t
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 8 q; v: x! F# M
下载WEB消息推送框架
4 {1 S1 h/ V5 @) B: u4 W9 I+ Q6 y- x

0 f# W( r; S! }' _* K) A   下载19472次
; n, C$ A/ \* G4 I

' f# A8 I9 o+ P: i, R- ~3 iPHPSocket.IO开发手册
' j: x, i% Z6 c7 |$ d( |
& ~- F# {, L3 F. B+ `7 l
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
3 \' s7 V9 k6 i( z. F, M# ^; P其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


) d% {0 Q: E9 Z$ \- f" p0 p效果2:& j" k9 \" Z* S) [) s$ ]

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


3 d6 u8 w0 L: b; I3 m6 V/ V: L% p5 M4 R$ u% m
安装启动

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


, c; i! {3 J' @9 A. Z2 W


5 I, R0 c5 W& V/ @" Y5 q9 E! D, H- D  d: ~4 q% W! ^" T. Z
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>8 O5 p: w$ w7 l% ]0 o* f$ b) d
  2. <script>
    & M2 P# \! ]* T
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip; u" f9 p9 O* b3 R
  4.     var socket = io('http://workerman.net:2120');1 S6 C+ }& g6 i$ C2 S9 y- f( _
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    $ N- M" `- k* Y3 g! Z
  6.     uid = 123;
    : b' P* z. ]2 s# [9 R% |( B# C' k$ p* s
  7.     // socket连接后以uid登录5 _/ z! N) M+ E
  8.     socket.on('connect', function(){
    & V$ j, K" p- s( d
  9.             socket.emit('login', uid);
    / o8 g2 w7 J! z/ s
  10.     });
    & ^8 }0 S7 u  R0 n  x  c: T
  11.     // 后端推送来消息时; W/ y: E- I  q' D- C
  12.     socket.on('new_msg', function(msg){
    4 I: k0 Q- H! F9 k: ]1 y
  13.         console.log("收到消息:"+msg);2 q2 r) @! r$ G( L! h: Z. o
  14.     });$ \' m# L- c8 @: [! d* L6 \8 w) h
  15.     // 后端推送来在线数据时/ G; h1 I$ h' C+ v8 ^- w
  16.     socket.on('update_online_count', function(online_stat){$ a+ f* o' ^: s: M7 u6 J/ n2 G3 B
  17.         console.log(online_stat);
    & p# T  L( d6 y4 E! l& j7 k; y
  18.     });
    $ r# T8 j" ~- h( G+ y4 k" o& ]
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    3 E6 j* [' ~# a% M  m" R# k" B
  2. // 指明给谁推送,为空表示向所有在线用户推送
    + N- T! t% n9 \
  3. $to_uid = "";
    , y- a# ~. |4 ^. `/ u; H
  4. // 推送的url地址,使用自己的服务器地址
      `' G3 y# \5 U' C+ _2 z! O5 K, o
  5. $push_api_url = "http://workerman.net:2121/";
    5 r8 L0 O( q: c" i
  6. $post_data = array(- |' `2 ^! L0 w+ t$ V5 r+ e" i% f
  7.    "type" => "publish"," `* E+ p/ x; X" t# Q6 a
  8.    "content" => "这个是推送的测试数据",
    ' M6 G7 p) Z! `9 O! R
  9.    "to" => $to_uid,
    ( `% Y% ]- H9 Q0 Q( K
  10. );, [! v1 r# I1 h" K' }# D; s' V  ~
  11. $ch = curl_init ();2 N# u0 F/ v5 G% o$ J, C
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );+ i" L4 Q# ?; @$ T/ E' j6 h2 Q' z
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    - _' F0 ~7 t3 O/ Q0 x. g3 i+ Z
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    ; t  ^, J* ^# j0 |4 S1 u
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );' W. d. X3 k/ K( S
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    " `& m; d: k! t6 j$ O
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    ; s+ R0 C* q2 i
  18. $return = curl_exec ( $ch );, S2 g3 s# \% X  O2 @
  19. curl_close ( $ch );
    ' N: m4 j- w- J8 d! _6 ~) E
  20. var_export($return);
复制代码
: f8 P$ C1 z. O0 `

. t9 r8 o+ U. M/ X) Q% L( }7 [( O: a/ U1 i5 a8 r( F+ d
- {5 F* j4 r& c: i' V/ D

( e& a9 j0 y( f. k8 q- m本文摘自 https://www.workerman.net/web-sender
" M+ f8 r- V$ r8 l; {" x3 y6 E$ B
  p+ Z* ?0 }/ h  x9 Q
( U! l" Z; e# ^. W: K5 `2 ?  i1 s8 F6 ^% i3 y
: |: y% _8 v( g+ U
' e) ]  |/ g  |4 s

; J5 t& P/ n  r" A/ i

1 H4 Q% m2 t" m

& P( \! B+ l) [2 b/ j- i6 I
2 T" ]& x$ `- `) I, @9 F
5 a- D( b/ w* P' m, Z' a

! |7 i1 {5 x5 [8 V  U

5 ^/ W: ?+ Q6 r; N
% ~/ R, [; N% ?  w0 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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