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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:/ Y" C; f9 D. ^: O: t% d! f
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 5 ^2 E) E( c& ~* N* A+ j! |
下载WEB消息推送框架
1 I- P# Q$ s" F7 {  L' T

' o1 ^" z3 I9 Q7 P4 M% ?: W# q1 f; Q   下载19472次) H& I: Q( r& E4 ~% X# J

: Y' f6 q2 }4 w) ?5 L! k8 b1 _% G- j, }PHPSocket.IO开发手册
1 J. |, `8 T$ f% s; i4 q+ G0 d, @) a

: d4 Y1 s; M; |2 O! r" J
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content1 C; S6 \% v, s* a% _
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

/ }$ s, w" H! k, o4 {
效果2:8 L, @% `3 S* p

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

4 [8 ]6 f: y1 E/ U8 |

7 o4 A5 j2 a9 m" l/ w, 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)


8 X% A1 K' u7 N7 [7 Q. j8 `1 m5 Z


& B9 G6 O) K7 C8 Q$ u9 J" a" C. s' b7 l$ Z* C2 {6 Q# |1 P, T
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    - u: n, H- ?1 X9 a" f  C4 Z
  2. <script>
    9 }& V" ^4 \+ [0 F* _5 N6 ]
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip( O- u( b' z' H3 E" ?1 m
  4.     var socket = io('http://workerman.net:2120');
    : c  ^* ~9 B. |  C: n  T
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数, V  z! m1 E; u) ?
  6.     uid = 123;
    & b0 E: e" U7 q/ W+ V9 ~
  7.     // socket连接后以uid登录# c8 B/ y  v- v0 O
  8.     socket.on('connect', function(){
    6 D" @  R* N+ t" M: \8 j
  9.             socket.emit('login', uid);
    # u: S7 j+ H* f( t
  10.     });
    # H) }5 S7 @0 j: S$ S
  11.     // 后端推送来消息时
    ; i* J9 J& l1 l4 d
  12.     socket.on('new_msg', function(msg){
    % N: T: A/ U2 z5 W. x( a/ X* J* Q
  13.         console.log("收到消息:"+msg);
    ! Z8 N. r! e* ^
  14.     });" m5 _' g" P5 K4 v. W. b& {
  15.     // 后端推送来在线数据时
    / T& Q5 o* x7 o7 V( K2 {
  16.     socket.on('update_online_count', function(online_stat){& `( y+ A* B3 U
  17.         console.log(online_stat);
    4 g6 X  V7 Z+ a) u
  18.     });" y$ J$ X- s9 W! H& Z5 z
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    : k) ?8 K& Q2 i! O
  2. // 指明给谁推送,为空表示向所有在线用户推送
    6 C" q7 k+ u' c8 v! X9 N5 y& K$ c
  3. $to_uid = "";
    - E" |3 X& {  h2 g$ p0 L0 ~3 O
  4. // 推送的url地址,使用自己的服务器地址0 y! J( d* u: W. H
  5. $push_api_url = "http://workerman.net:2121/";
    & Z+ o- b" E' Z- b2 v
  6. $post_data = array(# a1 F6 ?' l8 T$ O* g( u
  7.    "type" => "publish",  @" ~0 B6 q5 n. `( ]
  8.    "content" => "这个是推送的测试数据",( g& G8 V  p9 |. K
  9.    "to" => $to_uid,   l0 I2 ~+ l1 ]$ j2 A0 a
  10. );
    % _0 `: y9 c4 b/ z+ h& T
  11. $ch = curl_init ();+ `& a8 A6 X' G8 A+ b$ F
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );6 u! c: x! @% a& O# Q5 E
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
      d& O/ H% p$ Z7 k; c# N# `+ B, ^/ N
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    / a& ]! j! s. X! d, Q
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );$ g6 S+ M8 N1 X
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    $ `* A5 b) A& {: }* e3 L7 q: {4 I
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    ! K0 V6 \$ r) B2 O' C
  18. $return = curl_exec ( $ch );, z) V6 A3 M- X5 n0 h
  19. curl_close ( $ch );2 ~0 d3 V# L) m
  20. var_export($return);
复制代码

' Q# h2 V1 \# a% S5 @. A) N. z- [9 m9 D- m

, ?) D1 A( n- d+ Z0 q, H7 M$ }) L
  s! m! A" |+ y/ R

$ I2 N8 Z: v6 p$ [8 V: j. i2 T* I本文摘自 https://www.workerman.net/web-sender' [  `6 _0 z$ a. |* v* r

6 j* ]$ e) C# u/ @% I4 u9 Z( w
# h7 `! P  Z3 T% K5 V; u
) Y; ^! u9 W* ~+ d  A$ k
. U  ^5 U5 B4 e, Z* K; O3 o, Z8 u- u' R4 S% G; [/ W; L- o; v
: k. t0 K- Z+ n( S8 z
6 L8 m8 U; C. s- v5 I, y
2 f" F4 \6 S2 y$ Q" Y. a- D

! n2 j' j+ o% ^" j: g: b+ r

+ Z" Q2 S7 X! ~3 R( S  u( X, U# e/ `. q: K
* U/ Q) ~3 Y. K$ S2 L
9 g+ Z9 {8 m: K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-12-23 02:54 , Processed in 0.116539 second(s), 25 queries .

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