300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > php mysql 站内消息_php如何开发网易云信消息抄送功能之聊天室消息保存到本地数据库...

php mysql 站内消息_php如何开发网易云信消息抄送功能之聊天室消息保存到本地数据库...

时间:2021-10-29 13:00:58

相关推荐

php mysql 站内消息_php如何开发网易云信消息抄送功能之聊天室消息保存到本地数据库...

在开发APP时,需要使用到即时通讯功能。这里选择了网易云信。我们要将开发消息抄送功能,并且将聊天室的消息保存到本地的数据库中。其他的比如P2P聊天消息,群组聊天消息,群组操作,好友操作等消息,我这里就不多赘述了。其实,代码都差不多,只要把字段对应上即可。好的,下面我们看看网易云信api消息抄送功能怎么开发并且将聊天室消息保存到本地数据库中。想了解更多的开发功能。在网站中直接搜索[网易云信]关键字,即可找到相应的文章。

第一步:我们要在网易云信的管理后台开通消息推送的功能。

开启的步骤:登录后台 -> 应用 -> 服务管理 -> 服务配置 -> 消息抄送配置 -> 在消息抄送地址的地方填写你的接口地址。

第二步:在接口文件里面编写接收的代码。

通过查看网易云信的手册我们可以发现,它是通过http发送,消息的内容在request body里面。所以,我们这里要抓到请求过来的数据,

然后写入到数据库中。代码如下:/*

*云信消息抄送接口

*/

publicfunctionreceiveMsg()

{

$body=@file_get_contents('php://input');

$data=json_decode($body,true);//值得注意true

//file_put_contents('/debug.txt',$body);//测试有没有接收到数据,很实用哦

if($data){

$d['eventType']=$data['eventType'];

$d['attach']=$data['attach'];

$d['ext']=$data['ext'];

$d['fromAccount']=$data['fromAccount'];

$d['fromAvator']=$data['fromAvator'];

$d['fromClientType']=$data['fromClientType'];

$d['fromExt']=$data['fromExt'];

$d['fromNick']=$data['fromNick'];

$d['msgTimestamp']=$data['msgTimestamp'];

$d['msgType']=$data['msgType'];

$d['msgidClient']=$data['msgidClient'];

$d['resendFlag']=$data['resendFlag'];

$d['roleInfoTimetag']=$data['roleInfoTimetag'];

$d['roomId']=$data['roomId'];

$d['antispam']=$data['antispam'];

$info=M('receivemsg')->add($d);

if($info){

echo200;//要有返回值200没有200云信会在此的发送具体看说明文档

}

}else{

echo500;

}

}

上面的方法就可以接收到云信服务器发送给我们的聊天室的消息,我用的是thinkphp,所以加入数据库的操作,与其他的框架有点出入,可以自行修改。

好的。使用php开发网易云信api消息抄送功能并且聊天室消息保存到本地就到此为止了,有兴趣可以接着往下看,肯定有收获。

剖析:

为什么我上面要使用这行代码:$data = json_decode($body,true);

我们来分析下,网易云信服务器给我们返回的都是啥。通过file_put_contents函数我们得到,网易云信服务器给我们发送的json数据。

格式为:{"attach":"[哈哈][哈哈][哈哈]","eventType":"4","fromAccount":"liyasong","fromAvator":"","fromClientType":"IOS","fromExt":"","fromNick":"liyasong","msgTimestamp":"1467871787806","msgType":"TEXT","msgidClient":"beb0da49-f78e-4dc5-af14-08ae7d19ad1f","resendFlag":"0","roleInfoTimetag":"1467871784503","roomId":"3542370"}

一、通过json_decode($body)解码之后得到的是stdClass Object对象。stdClassObject

(

[attach]=>[哈哈][哈哈][哈哈]

[eventType]=>4

[fromAccount]=>liyasong

[fromAvator]=>

[fromClientType]=>IOS

[fromExt]=>

[fromNick]=>liyasong

[msgTimestamp]=>1467871787806

[msgType]=>TEXT

[msgidClient]=>beb0da49-f78e-4dc5-af14-08ae7d19ad1f

[resendFlag]=>0

[roleInfoTimetag]=>1467871784503

[roomId]=>3542370

)

二、通过json_decode($body,true)解码得到的结果为数组。Array

(

[attach]=>[哈哈][哈哈][哈哈]

[eventType]=>4

[fromAccount]=>liyasong

[fromAvator]=>

[fromClientType]=>IOS

[fromExt]=>

[fromNick]=>liyasong

[msgTimestamp]=>1467871787806

[msgType]=>TEXT

[msgidClient]=>beb0da49-f78e-4dc5-af14-08ae7d19ad1f

[resendFlag]=>0

[roleInfoTimetag]=>1467871784503

[roomId]=>3542370

)

我们要将得到的聊天室消息保存到本地数据库,所以得到数组是最好的处理的。通过得到的数据,我们将值对应的写入到我们的数据库中即可。

拓展:

json_decodePHPjson_decode()函数用于对JSON格式的字符串进行解码,并转换为PHP变量。

语法

mixedjson_decode($json[,$assoc=false[,$depth=512[,$options=0]]])

参数

json_string:待解码的JSON字符串,必须是UTF-8编码数据

assoc:当该参数为TRUE时,将返回数组,FALSE时返回对象。

depth:整数类型的参数,它指定递归深度

options:二进制掩码,目前只支持JSON_BIGINT_AS_STRING。

数据表CREATETABLE`receivemsg`(

`id`int(10)NOTNULLAUTO_INCREMENT,

`eventType`varchar(4)DEFAULT'4'COMMENT'值为4,表示是聊天室消息',

`attach`tinytextCOMMENT'消息内容',

`ext`tinytextCOMMENT'第三方扩展字段,格式不限,长度限制4096,字符串类型',

`fromAccount`varchar(10)DEFAULT''COMMENT'消息发送者的账号',

`fromAvator`varchar(100)DEFAULT''COMMENT'发送者的头像',

`fromClientType`varchar(10)DEFAULT''COMMENT'客户端类型:AOS、IOS、PC、WINPHONE、WEB、REST',

`fromExt`varchar(255)DEFAULT''COMMENT'发送者身份的扩展字段,开发者可以自定义',

`fromNick`varchar(40)DEFAULT''COMMENT'发送方昵称',

`msgTimestamp`varchar(15)DEFAULT''COMMENT'消息发送的时间戳',

`msgType`varchar(15)DEFAULT'',

`msgidClient`varchar(40)DEFAULT''COMMENT'客户端生成的消息id',

`resendFlag`tinyint(2)DEFAULT'0'COMMENT'重发标记:0不是重发,1是重发',

`roleInfoTimetag`varchar(15)DEFAULT''COMMENT'消息发送者用户名片的最后更新时间,可转为Long型数据',

`roomId`int(10)DEFAULTNULLCOMMENT'消息所属的聊天室id,可转为Long型数据',

`antispam`varchar(6)DEFAULT''COMMENT'标识是否被反垃圾,仅在被反垃圾时才有此字段,可转为Boolean类型数据',

PRIMARYKEY(`id`)

)ENGINE=InnoDBAUTO_INCREMENT=50DEFAULTCHARSET=utf8COMMENT='聊天室消息表';

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。