管理员
   
论坛积分
分
威望 点
贡献值 个
金币 枚
|
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
$ J2 ?9 M; j" O+ \% Y2 C- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
) x% ~# N3 {# _/ G$ _3 }. M 下载WEB消息推送框架4 E% h H& \: S. R0 x& o1 c& ]: x
3 ]/ {0 b% u, f! D% g' k 下载19472次2 s& }4 N& ^' s% f- k' v
% f+ x! a/ w3 a3 \/ \* d, UPHPSocket.IO开发手册
/ p6 n% l" B0 r- Y+ I% M" Q. f# s* [7 r) L4 u- h* ]
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content2 u- m4 @) `- {- d( j
其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容 " U3 X3 Q2 K5 X/ K9 _& B4 z5 N3 P
效果2:8 F; F- n/ @% E. A9 j8 b4 {
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计 3 N6 R0 V, q; y# _, ?# f/ U
5 |/ D/ e/ Q7 j: r1 D安装启动首先:参考手册检查/安装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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
& x9 u, `% n7 a& y
& h; n* p0 I' h8 Z3 K* ?
' d4 ~ K% d. t' W W! _/ {
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>6 C. `1 J4 A, @4 X7 {4 q6 U
- <script>
; P! w' r2 D! G( a1 ?& `" a - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
; e+ t6 J1 g6 c/ H* n! I! ^1 z% }5 b - var socket = io('http://workerman.net:2120');
2 y% R1 q( x& L* ]! @+ _3 T - // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数, h0 N3 S' n6 @+ H" e
- uid = 123;
# ?9 ~- m+ y% S# s* I - // socket连接后以uid登录- h( ^ O( P8 ?$ z
- socket.on('connect', function(){
: B( C! F9 g% w - socket.emit('login', uid);
# H% O$ B! R) A, R: \ - });6 a3 f0 F8 H$ ?$ B- M! C
- // 后端推送来消息时
( }6 {& y! _5 ?3 O* r3 i* o# Q - socket.on('new_msg', function(msg){
) Y4 k( `2 i! l1 R - console.log("收到消息:"+msg);
. N% D3 ^5 ^' `: a+ l! U8 d6 S; V - });4 Z" l) H2 [7 N% [; c7 w( r
- // 后端推送来在线数据时
% b2 B3 }; ^% p5 e0 { - socket.on('update_online_count', function(online_stat){
7 a# d) x' c3 U$ x" d! e; n. ] - console.log(online_stat);
( g- a, }! Y2 n - });7 N$ n3 \1 Q7 ] P$ s7 e# P
- </script>
复制代码 后端调用api向任意用户推送:- <?php
0 C$ c# o5 ^2 z7 _) u - // 指明给谁推送,为空表示向所有在线用户推送9 v: I0 {$ |* s5 R; P4 M. m5 y
- $to_uid = "";
" M; k& a6 ?5 ~) {0 M - // 推送的url地址,使用自己的服务器地址8 E5 E8 k! _ X! @- o3 h& d
- $push_api_url = "http://workerman.net:2121/";
0 }! s, N0 K6 X+ s/ Z. H0 N - $post_data = array(3 C, F* u$ p" w8 f
- "type" => "publish",0 A- Q# [7 p) H1 N. i
- "content" => "这个是推送的测试数据",$ c) |. x- a) ^4 ^6 m( ~, i
- "to" => $to_uid, : S* {- g. g+ n# y; v: F
- );
# S8 G: b0 M4 ^5 ]& O( a; S; i - $ch = curl_init ();* X9 b+ n. k9 g1 a
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );* F$ W/ _" X* p( V, C' u
- curl_setopt ( $ch, CURLOPT_POST, 1 );& T: u" O2 {) f s7 S
- curl_setopt ( $ch, CURLOPT_HEADER, 0 );$ _, p$ \" W, |, ?: x) J$ ^9 v* I
- curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );' N/ G d; P9 a8 k8 l9 |. m; i
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
: n! q, b! z, t, r( y3 L; ?1 {9 z - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
2 P$ e- m Z3 S" b; Q - $return = curl_exec ( $ch );
% l4 u! K# D# D9 ~1 N; c& E - curl_close ( $ch );
8 ?4 ^% @( f6 i. w2 f8 c1 O e - var_export($return);
复制代码
7 p5 @2 ~- k0 g9 a. W; e) c$ Z# ~' v* ^- }% Z Z! L7 M' X- {
3 m; H6 _9 U/ N! r) H
& Q" i4 v; x, Y
9 j! |. l- [4 P1 K
本文摘自 https://www.workerman.net/web-sender
" O0 C5 o& \6 b, U
. c& V; b+ R2 ]& F" n( u2 T x8 b& X
! _0 ^. p7 x1 X9 B0 u( H: m& ?3 M* T. }0 s7 o* t S$ {
5 e/ X0 Y# Y$ e0 g) p
6 O$ [+ P$ s" i+ i2 V% I
9 \0 S3 v5 m: o. m( E- N7 p
! |9 K) H7 x6 s9 e' i4 _' e% u) T' B" z+ Z( H* d
4 g( H8 X4 x- O- p) ]
8 o* _; _2 w: I/ I5 V/ t; P) R
% @3 b" f/ T1 T/ \3 }4 c9 j- S
2 Z( ]6 Q: g: e8 Y6 s u |
|