直播平台源码关于服务器聊天实现示列

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yun_bao_2144899870/article/details/87917448

直播平台源码中聊天服务器是通过socket.io实现的,在功能设计中,很多功能需要通过接口操作后广播到客户端实现消息通知,单纯使用php是无法实现的,需要在php处理后将消息通过socket.io通知到客户端,实现方式如下。
代码示列:
1.在socket.io的js脚本中增加http新的端口监听,并将监听获得数据进行相应规则转发,代码如下 :

//html监听
var servera = http.createServer(function(req, res) {
//	var params = url.parse(req.url, true).query;
    var body = "";
    //请求链接
  //  console.log(req.url);
    //每当接收到请求体数据,累加到post中
    req.on('data', function (chunk) {
        body += chunk;  //一定要使用+=,如果body=chunk,因为请求favicon.ico,body会等于{}
        //console. log("chunk:",chunk);
    });	
    req.on('end', function () {
        // 解析参数
		//console. log("body:",body);
        body = querystring.parse(body);  //将一个字符串反序列化为一个对象 
		do_msg(body);
        res.end();
    });	
	res.end();	 
}).listen(19999, function() {
	//console. log('服务开启19999');
}); 
//data. type 0 全站  1 单播   2 房间内
function do_msg(data){	
	if(typeof(data.type) == 'string' && typeof(data.action) == 'string' && typeof(data.method) == 'string' && typeof(data.ct) == 'string'){
		if(data.type == '0'){
			var data_obj={
						"msg":[
							{
								"_method_":data.method,
								"action":data.action,
								"ct":''+ data.ct,
								"msgtype":"4"
							}
						],
						"retcode":"000000",
						"retmsg":"OK"
					};		
			io.emit('broadcastingListen',[JSON.stringify(data_obj)]);	 
		}else if(data.type == '1'){
		//	console.log(1);
			if(typeof(data.target) == 'string' ){
				var targetarr=evalJson(data.target);
		//		console.log(targetarr[0]);
				if(typeof(targetarr) == 'object' ){
				//	console.log(3);
					var data_obj={
						"msg":[
							{
								"_method_":data.method,
								"action":data.action,
								"ct":''+ data.ct,
								"msgtype":"4"
							}
						],
						"retcode":"000000",
						"retmsg":"OK"
					};					
					for(var i in targetarr){
					//	console.log(i);
					//	console.log(sockets[targetarr[i]]);
						if(typeof(sockets[targetarr[i]]) != 'undefined' && sockets[targetarr[i]] != null){								sockets[targetarr[i]].emit("broadcastingListen",[JSON.stringify(data_obj)]);
						}
		}else if(data.type == '2'){
			//console. log(1);
			if(typeof(data.target) == 'string' ){
				var targetarr=evalJson(data.target);
			//	console.log(targetarr[0]);
				if(typeof(targetarr) == 'object' ){
			//		console.log(3);
					var data_obj={
						"msg":[
							{
								"_method_":data.method,
								"action":data.action,
								"ct":''+ data.ct,
								"msgtype":"4"
							}
						],
						"retcode":"000000",
						"retmsg":"OK"
					};		
					for(var i in targetarr) {
	io. sockets. in(targetarr[i]).emit("broadcastingListen",[JSON.stringify(data_obj)]);
					}

2.直播平台源码中聊天服务器在php的相应的接口处理流程中调用如下方法:

	function Post_node($curlPost,$url='http:// 127.0.0.1:19999'){
		$paramurl = http_build_query($curlPost , '' , '&');
		$curl = curl_init();
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_HEADER, false);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($curl, CURLOPT_NOBODY, true);
		curl_setopt($curl, CURLOPT_POST, true);
		curl_setopt($curl, CURLOPT_POSTFIELDS, $paramurl);
		$return_str = curl_exec($curl);
		curl_close($curl);
		return $return_str;
	}

以上,就是云豹直播平台源码服务器聊天实现展示,详细介绍了关于通过socket.io实现形式,和单纯使用php展示,如此,即可在云豹直播功能设计中实现访问php实现消息广播了。
声明:本篇文章为原创,转载请注明出处及作者。

猜你喜欢

转载自blog.csdn.net/yun_bao_2144899870/article/details/87917448
今日推荐