web-msg-sender是一款web長(zhǎng)連接推送框架,采用PHPSocket.IO開(kāi)發(fā),基于WebSocket長(zhǎng)連接通訊,如果瀏覽器不支持WebSocket則自動(dòng)轉(zhuǎn)用comet推送。 通過(guò)后臺(tái)推送消息,消息可以即時(shí)推送到客戶(hù)端,非輪詢(xún),實(shí)時(shí)性非常好,性能很高。
https://github.com/walkor/web-msg-sender
多瀏覽器支持
支持針對(duì)單個(gè)用戶(hù)推送消息
支持向所有用戶(hù)推送消息
長(zhǎng)連接推送(websocket或者comet),消息即時(shí)到達(dá)
支持在線(xiàn)用戶(hù)數(shù)實(shí)時(shí)統(tǒng)計(jì)展示
支持在線(xiàn)頁(yè)面數(shù)實(shí)時(shí)統(tǒng)計(jì)展示
支持跨域推送
web-msg-sender基于PHPSocket.IO開(kāi)發(fā),PHPSocket.io介紹參考這里
Demo:
效果1:
接收消息頁(yè)面:http://demos.workerman.net/web-sender/
推送接口url:http://demos.workerman.net:2121/?type=publish&to=uid&content=content
其中to為接收消息的uid,如果傳空則向所有人推送消息 content 為消息內(nèi)容
效果2:
見(jiàn)本頁(yè)面頁(yè)腳在線(xiàn)統(tǒng)計(jì)部分,支持實(shí)時(shí)的在線(xiàn)人數(shù)和在線(xiàn)頁(yè)面統(tǒng)計(jì)
首先:參考手冊(cè)檢查/安裝workerman環(huán)境
1、下載:下載web-msg-sender,并解壓縮到任意目錄
2、啟動(dòng):linux系統(tǒng)cd到到框架目錄里運(yùn)行php start.php start -d
。windows系統(tǒng)進(jìn)入到框架目錄里雙擊start_for_win.bat
文件啟動(dòng)。
3、測(cè)試:瀏覽器訪(fǎng)問(wèn)端口 http://ip:2123
或者 http://域名:2123
,(如果無(wú)法訪(fǎng)問(wèn)請(qǐng)參考手冊(cè)客戶(hù)端連接失敗)
<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
<script>
// 連接服務(wù)端,workerman.net:2120換成實(shí)際部署web-msg-sender服務(wù)的域名或者ip
var socket = io('http://workerman.net:2120');
// uid可以是自己網(wǎng)站的用戶(hù)id,以便針對(duì)uid推送以及統(tǒng)計(jì)在線(xiàn)人數(shù)
uid = 123;
// socket連接后以u(píng)id登錄
socket.on('connect', function(){
socket.emit('login', uid);
});
// 后端推送來(lái)消息時(shí)
socket.on('new_msg', function(msg){
console.log("收到消息:"+msg);
});
// 后端推送來(lái)在線(xiàn)數(shù)據(jù)時(shí)
socket.on('update_online_count', function(online_stat){
console.log(online_stat);
});
</script>
<?php
// 指明給誰(shuí)推送,為空表示向所有在線(xiàn)用戶(hù)推送
$to_uid = "";
// 推送的url地址,使用自己的服務(wù)器地址
$push_api_url = "http://workerman.net:2121/";
$post_data = array(
"type" => "publish",
"content" => "這個(gè)是推送的測(cè)試數(shù)據(jù)",
"to" => $to_uid,
);
$ch = curl_init ();
curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
curl_setopt ( $ch, CURLOPT_POST, 1 );
curl_setopt ( $ch, CURLOPT_HEADER, 0 );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));
$return = curl_exec ( $ch );
curl_close ( $ch );
var_export($return);