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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:9 K! z4 F. {' E
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) * w& X1 }# Q9 F% G
下载WEB消息推送框架2 ^- h. ~8 j, n. B+ _8 i8 B4 T
. m7 q+ @' a2 p, V, q
   下载19472次+ h! Q5 L& z' _/ m5 g

* ^3 P7 O/ F. w+ WPHPSocket.IO开发手册* D7 `) H1 y( [1 {8 d4 ~( c

5 ]4 W; Y" B* k9 ]
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
8 }  G% o1 ~, r- I其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

4 x7 S! I, V" \
效果2:
) f0 P  U: x' A3 @

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

% s* \3 m' C7 d; z5 ?3 _7 H

2 q* q! s0 O0 t8 j安装启动

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


2 W: ~/ |+ g( J5 ~


; g- S$ I7 H6 ~. _6 N# c" H8 P$ J, a" p7 [0 a
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    + D7 z9 ^$ R) l. z  o( D4 }$ Y& r
  2. <script>
    1 t( h5 T+ T7 q- o8 G  S$ a& o
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip! X4 n0 Q7 Q4 w
  4.     var socket = io('http://workerman.net:2120');
    " m' h' b* Y8 V& K
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数, k/ d0 j! W6 o) _' S6 C
  6.     uid = 123;
    0 m' h% D& m. s8 L
  7.     // socket连接后以uid登录+ p! b+ u9 n- m4 ]' u3 R
  8.     socket.on('connect', function(){
    ( v) |9 \, `  Z+ Y8 y
  9.             socket.emit('login', uid);, B* T' h7 \9 `7 H
  10.     });, O6 S& M( t8 x, M2 r
  11.     // 后端推送来消息时; B+ @6 E. p( X9 F) y8 B, G: N
  12.     socket.on('new_msg', function(msg){( N1 \/ X( a" ?
  13.         console.log("收到消息:"+msg);" }) M' y# y+ H7 L0 C' L. M0 Z
  14.     });5 L- L, ^2 ]3 L4 ~) k
  15.     // 后端推送来在线数据时
    1 B! z1 C/ ^& A9 {% U
  16.     socket.on('update_online_count', function(online_stat){; \6 l0 J, u, ]/ N3 J$ N1 r2 u
  17.         console.log(online_stat);! T% X( b( z. F
  18.     });
    ( c) E. B4 H3 @- L
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php) ~2 @4 ~: g% P; q
  2. // 指明给谁推送,为空表示向所有在线用户推送
    & e- x, H$ k$ a  B# A: N# [
  3. $to_uid = "";
    : C$ b( Y) H: }) j, R& A4 c0 f" a
  4. // 推送的url地址,使用自己的服务器地址
    ) ]" B7 k) B4 [$ U
  5. $push_api_url = "http://workerman.net:2121/";
    # L4 |. ^; N1 I/ n% B7 E- P
  6. $post_data = array(6 m) S. P/ h. J0 Y
  7.    "type" => "publish"," Q2 X, s0 J" H) \! H
  8.    "content" => "这个是推送的测试数据",2 Z$ r4 H, b% I% N4 e. [
  9.    "to" => $to_uid, 6 P0 ~/ ^) {0 [5 e1 G
  10. );" |, o- f4 @& o
  11. $ch = curl_init ();& ?- A( v7 g8 P2 g& Z9 k
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );, j2 ]2 J: u* ~& h9 Y
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );
    9 A: d  ?$ K0 k% v6 a
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    & k0 Z& T% ^% l. [$ j' t, D) |
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    ; q4 V+ J# C; f3 j# ^+ M
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );+ j) l( i8 B+ g9 T& ]
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    * B7 _7 B, v; y2 N) ?8 t1 `1 R1 a+ G1 B
  18. $return = curl_exec ( $ch );
    8 F/ m' \2 B( f/ K' @2 G
  19. curl_close ( $ch );  h% F% \) N# q  m( o
  20. var_export($return);
复制代码
& ^/ N- Q# M9 q+ }, a) P' e% r
% k$ q* m+ V( z/ o2 m4 `$ I
! Y6 f; A  R. a  ^, g& f
7 B6 z0 B" I5 w  d

9 p- ^3 ^7 W& i# z8 ?) ?# @/ P本文摘自 https://www.workerman.net/web-sender3 t* K8 [$ v' L7 @' \8 F

1 m; \! _. Q4 ^* Y1 T4 S( ]9 s& [( v6 j

6 H0 c# l: y$ w$ ~! o9 ?% ?
, j( T: o. A( s; J/ I/ g6 g9 |; f+ `! E0 c

) a9 Z- f) Y, f! x1 F2 v
! R7 e8 \+ ^$ w7 c- l
  ?* w9 \0 p; \5 e5 a3 K9 H

( R2 F$ q# I! ?) w/ ?
9 L; c& o* t/ f4 S7 M& @

& w4 b! I: G; J: [+ h" Y4 h6 ^

. h' v  F' \; Z( V: _+ e, T) M2 Y# p: K+ [4 k1 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2024-5-19 20:56 , Processed in 0.167032 second(s), 24 queries .

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