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

QQ登录

只需一步,快速开始

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

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

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

特点:7 T; t; y, q" s$ s3 S$ i
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) 6 F0 q, x: }$ f) J  \$ G
下载WEB消息推送框架( j/ c6 H* N$ ?
2 `; Z. d1 ?& Z* v+ w1 ?: D
   下载19472次, L3 `5 T# P2 V# T

4 @* W$ X. i: Z% E# O* XPHPSocket.IO开发手册7 Z) v6 V' e( r$ O  V
7 V  y3 g3 F2 a! w7 q
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
3 C) t  \! w& T% D其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容


: Y) V- K6 I2 b1 [( H效果2:
% M: i) i! y. u% G, E

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

3 n: d/ Z4 `3 D5 L( w/ b
1 W% J( T! |0 k1 X  L, l
安装启动

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


3 t6 X7 C; `! m* H$ Q- x


. B( T$ ], x5 H( ^& x6 R+ U
# `0 ^# n5 E# L5 b前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
    " F9 a0 V& G* \* L" ~
  2. <script>- L" E( `) `, t
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip4 s; b( H. |% ?& s& ]/ {' L
  4.     var socket = io('http://workerman.net:2120');" T% _2 l( x: x: X, X0 {
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数! R5 ]) A, H. M" P, W% P* |% q5 ^3 f
  6.     uid = 123;; q. }2 ]1 X3 E2 T
  7.     // socket连接后以uid登录
    / i) ^& b9 b1 p6 t( N
  8.     socket.on('connect', function(){
    ! D. f; M% }, ?2 b3 C9 x: b
  9.             socket.emit('login', uid);4 g6 N. I! s/ V4 m
  10.     });7 V6 q3 g5 J/ V5 _7 y2 y
  11.     // 后端推送来消息时3 M* \  \+ Y9 j/ U& k
  12.     socket.on('new_msg', function(msg){  _" m6 _; E1 a" N
  13.         console.log("收到消息:"+msg);* }- L6 @( J9 S, `* d
  14.     });
    + f' L$ N" I: a8 q
  15.     // 后端推送来在线数据时2 Q( E4 [9 R( Z  |3 b3 ?
  16.     socket.on('update_online_count', function(online_stat){
    ! z/ |% @+ P) r- A; Z  l( o
  17.         console.log(online_stat);
    " B$ ?8 e2 o" ]) b, y+ V
  18.     });$ S  j. I- k7 _+ Q6 c# o+ \& E0 V
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    2 c  v  I* p: r/ G- j
  2. // 指明给谁推送,为空表示向所有在线用户推送  E4 Y/ m; D* f2 T: s
  3. $to_uid = "";
    : j3 B* G0 k( P6 h0 J$ A  z
  4. // 推送的url地址,使用自己的服务器地址' j1 O8 U2 X" Y7 q
  5. $push_api_url = "http://workerman.net:2121/";
    5 b% o! Q. B& y
  6. $post_data = array(* b8 f1 \- W' S6 t' G; L) ]' ]' t% T
  7.    "type" => "publish",
    ) _0 I$ I$ P8 J& b
  8.    "content" => "这个是推送的测试数据",
    ( Z- s8 Q: `/ _( P
  9.    "to" => $to_uid, ; \) F) i" y3 v" h1 {
  10. );- x# W: s# y- w
  11. $ch = curl_init ();( L0 {. d& l1 M6 t# r
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    5 k9 o# x* G3 C5 P: d
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );% l# ?+ n+ f5 ^8 Z3 y7 U
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );* R! X- Q3 o% i- W' c- u; m4 t7 f" c# [
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );- E: Z' [, d4 I  J: \8 ~9 `9 R3 p7 l
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );+ q9 @2 o- l" k+ C
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));5 }0 Y% h' o0 ]+ K
  18. $return = curl_exec ( $ch );
    # C0 k. r9 ~/ P7 j+ x6 |( v
  19. curl_close ( $ch );0 o) x. k6 A6 \. f+ O
  20. var_export($return);
复制代码
: ?- Y) p- F/ [2 `- C2 u5 q  @

+ w2 }. T# Q2 _" B" ]' D, X. e7 f9 t: e# R* t

4 f0 G. q5 Q; }8 \

8 F9 m; L; f- H: l; b4 I5 d* U" w本文摘自 https://www.workerman.net/web-sender, F1 P+ s; q; i, D! P

5 W; V0 j& `4 ]# c2 k% e  U. f' j$ L1 a3 r1 j
" v- X) A/ v5 e" x. R3 n
/ O# f$ U* @( i4 L

5 a, G; [. B5 d( U. `' L4 x" V8 ?& T8 Q: k2 e3 D" x) W

: H4 A) q8 _4 F0 U
) `! T  E4 [9 V4 u

  q( w) T6 O* Y& j9 v
8 X$ v  q% a9 J2 g& }
  g4 R  S( ]2 e* J

5 ?+ d- F6 c/ K$ m4 `- c. m% D& r* ~) t& ^- v2 w2 [! j! c! k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

GMT+8, 2026-8-4 12:45 , Processed in 0.057720 second(s), 23 queries .

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