使用icomet 实现长轮询(续)

1. 引入 icomet.js

这里点击下载: https://github.com/ideawu/icomet


2. 引入相关的详细配置


var app_host = '你的服务器域名或ip',
    icomet_host = '你所配置icomet服务器所在的域名或ip';

var comet = new iComet({
	channel: 'abc',        //推送消息的频道 作为自己的唯一标识 即 cname 的别名
	sign_url: 'http://'+app_host+'你的接口注册地址', //注册 服务器 否则不会对该客户端 推送消息
	sub_url: 'http://'+icomet_host+':8100/sub',  //请求 icomet服务器 与程序无关
	pub_url: 'http://'+app_host+'你的接口发送地址', //推送消息 给服务器
	sub_timeout: 60*1000, //请求 注册 响应超时 重连间隔时间
	callback: function(msg){//回调函数
	    //主动接收回调消息
	}
});

//推送消息
comet.pub('你要发送的消息内容',function(msg){
	console.log(msg);
});

//停止所有服务器推送或接收请求
comet.stop();

3. 编写服务端的 注册接口 和 发送消息接口

(1) 注册接口

//这里用 cookie 或者 session 或者  memcache 存储当前用户cname
$cb = urlencode($_GET['cb']);
$cname = urlencode($_GET['cname']);

$_COOKIE['cname'] = $cname

$url = "http://127.0.0.1:8000/sign?cname=$cname&cb=$cb";
$resp = http_get($url);
echo $resp;

function http_get($url){
	$ch = curl_init($url) ;
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
	$result = curl_exec($ch) ;
	curl_close($ch) ;
	return $result;
}



(2) 消息推送接口


if(get_magic_quotes_gpc()){
	$_GET['content'] = stripslashes($_GET['content']);
}
$cname = trim($_GET['cname']);
$content = trim($_GET['content']);

if($_COOKIE['cname'] == $cname){
    //检验当前登陆是否是本人
}

echo icomet_push($cname, $content);

function icomet_push($cname, $content){
	$cname = urlencode($cname);
	$content = urlencode($content);
	$url = "http://127.0.0.1:8000/push?cname=$cname&content=$content";

	$ch = curl_init($url) ;
	curl_setopt($ch, CURLOPT_HEADER, 0);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1) ;
	$result = @curl_exec($ch) ;
	curl_close($ch) ;
	return $result;
}








  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值