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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:
) M; P. ]3 K, E. D
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1)
    * }& |2 K2 r; J& i- z' W
下载WEB消息推送框架
/ s& Q- R1 G# M( ~& D

2 @& }* [6 v6 R" g+ w5 ~( ]   下载19472次. u$ D, g# ~$ K3 L

+ k4 O; ^2 c# m# Q5 ^PHPSocket.IO开发手册0 s" t% g3 e: v

( b( g9 u  U6 R  ]; Y5 [
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
; i% E% T' H9 X' C, N其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


# g+ p9 W  d: R/ ~8 x( v7 m6 \效果2:$ {9 h" h0 t" U1 g1 |

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

, l8 r( h# Y# Z) B9 A( o

2 v5 c* [* V5 @' C安装启动

首先:参考手册检查/安装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 {) U2 v& e5 |. E& j

1 }1 P, ^' V4 L# _: h( w3 |
' v+ J  j8 e/ S
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>- z( {! c5 z1 F! g
  2. <script>
    % w$ d. d2 J3 l
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip. U- p) |3 e: R  \& Y* B: H
  4.     var socket = io('http://workerman.net:2120');; D% W0 @" D9 H
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    ' t& f- s& m' l3 J/ @+ R
  6.     uid = 123;! P; p6 B  F8 I- y7 t
  7.     // socket连接后以uid登录: N+ X/ P& E; o! k3 P, l
  8.     socket.on('connect', function(){
    & G8 ~8 n2 g* X/ e7 h! n& y
  9.             socket.emit('login', uid);- B9 Z8 D4 a6 L# i
  10.     });9 t% f4 j. X% |  C9 n7 j3 s
  11.     // 后端推送来消息时
    ; a& p" c. Q2 K8 O. {
  12.     socket.on('new_msg', function(msg){
    # i2 Q+ h% [  K# ~7 U& O* y
  13.         console.log("收到消息:"+msg);
    ) \9 f9 }0 X0 o" ]( C7 D
  14.     });4 N6 t' J: [2 Q; J& _/ ^7 H
  15.     // 后端推送来在线数据时
    . v6 [5 e! Q, g& Q1 j& L
  16.     socket.on('update_online_count', function(online_stat){
    7 c" d& D5 C2 ^  y; u: l9 f! ^+ F% Y
  17.         console.log(online_stat);
    7 C  P$ A& N, w8 A* S- v$ }
  18.     });
    / Y  _* q/ s6 T
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    3 {* U% L5 j+ d3 u2 S
  2. // 指明给谁推送,为空表示向所有在线用户推送
    ( P9 w2 T/ e" f' a, n4 b2 T* P
  3. $to_uid = "";4 ]7 ]* w  d* R2 g
  4. // 推送的url地址,使用自己的服务器地址% m! p: W! M! l% c7 k$ r
  5. $push_api_url = "http://workerman.net:2121/";; _- r* k4 U5 g' c2 C' o; s
  6. $post_data = array(1 e) y, L7 K1 x% k0 E# D( B+ Y
  7.    "type" => "publish",  c' L7 e! ~" l# ~4 u
  8.    "content" => "这个是推送的测试数据",( G, ]; A6 z4 n
  9.    "to" => $to_uid, 1 Q5 H6 a. ?1 N2 `: L
  10. );
    & [; d# e( n# d5 r7 x, ~) B
  11. $ch = curl_init ();
    9 q- F5 T5 u# D# S- _7 F% U/ W
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    5 W) z/ w: E7 z9 V$ @0 B* ~3 X
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );8 n4 m" Y# \: \
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    . `. r1 O0 r! m& Q
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    3 l6 Z, o2 Z7 i: S9 O
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );: R$ O8 T2 G* s1 v' o. f1 b" l. m
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));( X; {# h* F" B8 \; j1 \1 U
  18. $return = curl_exec ( $ch );
    ) S9 o: T8 b* o4 [6 f
  19. curl_close ( $ch );* |% R' i# `) d
  20. var_export($return);
复制代码
1 ~5 c, `- f+ X3 n& j1 d8 e
$ Z5 T4 A6 h9 B- W3 f2 O& p2 a6 I
5 y  _( ?' [  J& [
; Z/ ~5 |$ U2 S- B
7 h/ L0 n1 i7 b" D4 V
本文摘自 https://www.workerman.net/web-sender
3 S6 R0 ^# Y/ u  x; W
! s* U- ^% s8 }6 o) Z% o0 K# b6 K) S: i6 Y# [
1 X7 y4 J( s$ X/ O

; h0 ^' t/ B+ \
1 R7 a6 `; s- X9 b
0 |1 n1 Y$ C: t/ h. h, U+ e" ^. _3 V
4 v* j8 C  \+ R: d% d. j
& o4 l2 |0 v6 s. ?

0 ]$ E1 w& U8 G

4 q) Q+ Q4 Y& Q4 A  o6 Q
1 }6 R9 z) ~, C( N4 w
. O7 b" d/ W7 c
0 h9 m. r; I% M8 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:44 , Processed in 0.066927 second(s), 22 queries .

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