管理员
论坛积分
分
威望 点
贡献值 个
金币 枚
|
web-msg-sender是一款web长连接推送框架,采用PHPSocket.IO开发,基于WebSocket长连接通讯,如果浏览器不支持WebSocket则自动转用comet推送。 通过后台推送消息,消息可以即时推送到客户端,非轮询,实时性非常好,性能很高。 特点:
. Y9 } d9 E( ^, B- t- 多浏览器支持
- 支持针对单个用户推送消息
- 支持向所有用户推送消息
- 长连接推送(websocket或者comet),消息即时到达
- 支持在线用户数实时统计展示
- 支持在线页面数实时统计展示
- 支持跨域推送
- 下载
- WEB消息推送框架
-
web-msg-sender.zip
(1.5 MB, 下载次数: 1)
8 q; v: x! F# M
下载WEB消息推送框架
4 {1 S1 h/ V5 @) B: u4 W9 I+ Q6 y- x
0 f# W( r; S! }' _* K) A 下载19472次
; n, C$ A/ \* G4 I
' f# A8 I9 o+ P: i, R- ~3 iPHPSocket.IO开发手册
' j: x, i% Z6 c7 |$ d( |& ~- F# {, L3 F. B+ `7 l
PHPSocket.IO开发手册Demo:效果1:接收消息页面:http://demos.workerman.net/web-sender/ 推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
3 \' s7 V9 k6 i( z. F, M# ^; P其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容
) d% {0 Q: E9 Z$ \- f" p0 p效果2:& j" k9 \" Z* S) [) s$ ]
见本页面页脚在线统计部分,支持实时的在线人数和在线页面统计
3 d6 u8 w0 L: b; I3 m6 V/ V: L% p5 M4 R$ u% 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如图:(如果无法访问请检查服务器防火墙,如果是云服务器还要设置安全组)
, c; i! {3 J' @9 A. Z2 W
5 I, R0 c5 W& V/ @" Y5 q9 E! D, H- D d: ~4 q% W! ^" T. Z
前端测试:- <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>8 O5 p: w$ w7 l% ]0 o* f$ b) d
- <script>
& M2 P# \! ]* T - // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip; u" f9 p9 O* b3 R
- var socket = io('http://workerman.net:2120');1 S6 C+ }& g6 i$ C2 S9 y- f( _
- // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
$ N- M" `- k* Y3 g! Z - uid = 123;
: b' P* z. ]2 s# [9 R% |( B# C' k$ p* s - // socket连接后以uid登录5 _/ z! N) M+ E
- socket.on('connect', function(){
& V$ j, K" p- s( d - socket.emit('login', uid);
/ o8 g2 w7 J! z/ s - });
& ^8 }0 S7 u R0 n x c: T - // 后端推送来消息时; W/ y: E- I q' D- C
- socket.on('new_msg', function(msg){
4 I: k0 Q- H! F9 k: ]1 y - console.log("收到消息:"+msg);2 q2 r) @! r$ G( L! h: Z. o
- });$ \' m# L- c8 @: [! d* L6 \8 w) h
- // 后端推送来在线数据时/ G; h1 I$ h' C+ v8 ^- w
- socket.on('update_online_count', function(online_stat){$ a+ f* o' ^: s: M7 u6 J/ n2 G3 B
- console.log(online_stat);
& p# T L( d6 y4 E! l& j7 k; y - });
$ r# T8 j" ~- h( G+ y4 k" o& ] - </script>
复制代码 后端调用api向任意用户推送:- <?php
3 E6 j* [' ~# a% M m" R# k" B - // 指明给谁推送,为空表示向所有在线用户推送
+ N- T! t% n9 \ - $to_uid = "";
, y- a# ~. |4 ^. `/ u; H - // 推送的url地址,使用自己的服务器地址
`' G3 y# \5 U' C+ _2 z! O5 K, o - $push_api_url = "http://workerman.net:2121/";
5 r8 L0 O( q: c" i - $post_data = array(- |' `2 ^! L0 w+ t$ V5 r+ e" i% f
- "type" => "publish"," `* E+ p/ x; X" t# Q6 a
- "content" => "这个是推送的测试数据",
' M6 G7 p) Z! `9 O! R - "to" => $to_uid,
( `% Y% ]- H9 Q0 Q( K - );, [! v1 r# I1 h" K' }# D; s' V ~
- $ch = curl_init ();2 N# u0 F/ v5 G% o$ J, C
- curl_setopt ( $ch, CURLOPT_URL, $push_api_url );+ i" L4 Q# ?; @$ T/ E' j6 h2 Q' z
- curl_setopt ( $ch, CURLOPT_POST, 1 );
- _' F0 ~7 t3 O/ Q0 x. g3 i+ Z - curl_setopt ( $ch, CURLOPT_HEADER, 0 );
; t ^, J* ^# j0 |4 S1 u - curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );' W. d. X3 k/ K( S
- curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
" `& m; d: k! t6 j$ O - curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
; s+ R0 C* q2 i - $return = curl_exec ( $ch );, S2 g3 s# \% X O2 @
- curl_close ( $ch );
' N: m4 j- w- J8 d! _6 ~) E - var_export($return);
复制代码 : f8 P$ C1 z. O0 `
. t9 r8 o+ U. M/ X) Q% L( }7 [( O: a/ U1 i5 a8 r( F+ d
- {5 F* j4 r& c: i' V/ D
( e& a9 j0 y( f. k8 q- m本文摘自 https://www.workerman.net/web-sender
" M+ f8 r- V$ r8 l; {" x3 y6 E$ B
p+ Z* ?0 }/ h x9 Q
( U! l" Z; e# ^. W: K5 `2 ? i1 s8 F6 ^% i3 y
: |: y% _8 v( g+ U
' e) ] |/ g |4 s
; J5 t& P/ n r" A/ i
1 H4 Q% m2 t" m
& P( \! B+ l) [2 b/ j- i6 I
2 T" ]& x$ `- `) I, @9 F5 a- D( b/ w* P' m, Z' a
! |7 i1 {5 x5 [8 V U
5 ^/ W: ?+ Q6 r; N
% ~/ R, [; N% ? w0 L |
|