cncml手绘网

标题: WEB消息推送框架 [打印本页]

作者: admin    时间: 2018-10-27 14:07
标题: WEB消息推送框架

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

特点:& O# _( h2 `/ ?# \2 d' m
  • 多浏览器支持
  • 支持针对单个用户推送消息
  • 支持向所有用户推送消息
  • 长连接推送(websocket或者comet),消息即时到达
  • 支持在线用户数实时统计展示
  • 支持在线页面数实时统计展示
  • 支持跨域推送
  • 下载
  • WEB消息推送框架
  • web-msg-sender.zip (1.5 MB, 下载次数: 1) / W3 m) R* P7 Q6 X7 B# D' }. F  c
下载WEB消息推送框架
; Z" m. @( M( L* C
% H: n) T. R3 H, R0 @) Z
Fork on Github
  
下载ZIP压缩文件
下载19472次
6 l/ p# J  P9 E, _% G( y3 k

5 ?3 D$ {  v7 D% X% i4 cPHPSocket.IO开发手册
  ^" l6 x  I3 R) P

0 [( v' e' x2 c. Q+ U; [
PHPSocket.IO开发手册Demo:效果1:

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

推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
. \; g! X; v# L0 o/ n# V- L其中to为接收消息的uid,如果传空则向所有人推送消息 content 为消息内容

$ ?/ [, ?. x7 ^' f- s
效果2:
4 C  n! r. R: S5 O: e

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


/ ~( C% s$ u) N: W2 V) a0 ]$ X* X7 d: {+ e/ l' t# [2 V
安装启动

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


+ t6 i" a/ t4 r  s0 G6 W3 I5 a$ T

5 p2 o1 a* S3 c4 [
, n' K% @* u& q. N. T3 S+ y, l
前端测试:
  1. <script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>( ]' N( y2 u  {1 n' D/ g
  2. <script>. {7 V) [2 N0 N7 Y: R- X
  3.     // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    5 ^$ t, \- Z6 r  G8 Y
  4.     var socket = io('http://workerman.net:2120');+ z% W) F* B  H( r# K
  5.     // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    + G' x" [& X5 O/ r5 }0 K, f
  6.     uid = 123;, y' a) t4 v0 D
  7.     // socket连接后以uid登录, P0 u1 Y8 a* q8 G! l" t
  8.     socket.on('connect', function(){
    ) |- F2 H$ z& N% Q8 n5 R& k9 E6 O
  9.             socket.emit('login', uid);9 J8 D/ z; P$ [7 f) U
  10.     });! |5 F$ a( \# U/ d
  11.     // 后端推送来消息时
    ( h3 J9 w7 K, u, @8 `" N5 Y
  12.     socket.on('new_msg', function(msg){* R8 Y/ m4 R8 U. N. q( O8 G+ e
  13.         console.log("收到消息:"+msg);
    7 Y9 Q  [7 J- L- G% B* q
  14.     });6 i1 k5 u; G6 ~% w1 @
  15.     // 后端推送来在线数据时
    ' C0 O2 c6 c8 f! u3 Y( `
  16.     socket.on('update_online_count', function(online_stat){; F! f* C1 p8 B/ K' f  J. T
  17.         console.log(online_stat);
    + s/ V4 `/ e# [
  18.     });
    5 h' B' z' f  W9 b
  19. </script>
复制代码
后端调用api向任意用户推送:
  1. <?php
    $ i' _) B/ ]5 s: D: X
  2. // 指明给谁推送,为空表示向所有在线用户推送$ |' F0 N& e. c
  3. $to_uid = "";" O+ B# Z2 M1 Y2 D! m
  4. // 推送的url地址,使用自己的服务器地址
    3 w4 i* b# ^+ U: U# C! E
  5. $push_api_url = "http://workerman.net:2121/";
    ! F7 X/ i, f) W+ o) c1 S
  6. $post_data = array(" a! l, ^: r% H+ ?. K
  7.    "type" => "publish",& b3 }, [3 ~& w, H) l
  8.    "content" => "这个是推送的测试数据",# k2 B5 w7 i) `$ V# Z
  9.    "to" => $to_uid,
    ' [* M3 p  R0 C( ~7 L4 J
  10. );5 C# F: ~, Z8 v0 ?+ S4 m/ M
  11. $ch = curl_init ();. c/ ]0 P$ e, z
  12. curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
    : n6 `) b; _2 q. }$ g% @' x
  13. curl_setopt ( $ch, CURLOPT_POST, 1 );- |& F' i8 A" z+ `
  14. curl_setopt ( $ch, CURLOPT_HEADER, 0 );
    % K; ?8 ^! s: `& R! \# h' d0 |
  15. curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
    7 w2 Q. R+ X0 a* S/ X- K! X- o6 X
  16. curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
    " X: v% [' X7 E
  17. curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
    . }& {* f/ A" E& n, F7 h
  18. $return = curl_exec ( $ch );
    7 [) s: s/ E( R  F
  19. curl_close ( $ch );
    3 H8 N+ I5 W" G: j6 u# {
  20. var_export($return);
复制代码
+ x( m( o7 ]7 b4 ~
3 @5 i5 h1 E" Z0 _7 `; O

4 ^( \* q: G7 {5 o
# T1 i  x' b% c! R( o# {# @
+ H' ?* ]$ X* \) A% |( d& U
本文摘自 https://www.workerman.net/web-sender! ^; h* u1 [0 x! C8 P2 v: {

& H1 Z$ q5 w# U$ }, T3 X, U& w3 a0 [7 q) a  `

8 i8 f$ F3 ^0 e  v# Y' R- S: |2 h6 y2 D7 d# G5 Z% v% M6 C8 C
9 i6 F9 G( s8 i9 p" s: X

9 w9 z" q0 x4 i. D
  A) o4 U$ _1 Q  C# c* d
7 L) x+ v, s  K6 I' ^& R& R

  G4 K1 Q9 }8 D: i

5 \, ^/ Y5 ?+ O" ~% s# N5 I) \) c3 q' S
( y2 u" O0 z; F! @2 P( H- |5 C
" @3 o& B. }1 Y$ |" b# T( x" G9 E
/ P( R/ O" y1 d# f, a





欢迎光临 cncml手绘网 (http://bbs.cncml.com/) Powered by Discuz! X3.2