php mysql 站内消息_php如何开发网易云信消息抄送功能之聊天室消息保存到本地数据库...
在开发APP时,需要使用到即时通讯功能。这里选择了网易云信。我们要将开发消息抄送功能,并且将聊天室的消息保存到本地的数据库中。其他的比如P2P聊天消息,群组聊天消息,群组操作,好友操作等消息,我这里就不多赘述了。其实,代码都差不多,只要把字段对应上即可。好的,下面我们看看网易云信api消息抄送功能怎么开发并且将聊天室消息保存到本地数据库中。想了解更多的开发功能。在网站中直接搜索[网易云信]关键字,即可找到相应的文章。
第一步:我们要在网易云信的管理后台开通消息推送的功能。
开启的步骤:登录后台 -> 应用 -> 服务管理 -> 服务配置 -> 消息抄送配置 -> 在消息抄送地址的地方填写你的接口地址。
第二步:在接口文件里面编写接收的代码。
通过查看网易云信的手册我们可以发现,它是通过http发送,消息的内容在request body里面。所以,我们这里要抓到请求过来的数据,
然后写入到数据库中。代码如下:/*
* 云信消息抄送接口
*/
public function receiveMsg()
{
$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){
echo 200; // 要有返回值 200 没有200 云信会在此的发送 具体看说明文档
}
}else{
echo 500;
}
}
上面的方法就可以接收到云信服务器发送给我们的聊天室的消息,我用的是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对象。stdClass Object
(
[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_decodePHP json_decode() 函数用于对 JSON 格式的字符串进行解码,并转换为 PHP 变量。
语法
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
参数
json_string: 待解码的 JSON 字符串,必须是 UTF-8 编码数据
assoc: 当该参数为 TRUE 时,将返回数组,FALSE 时返回对象。
depth: 整数类型的参数,它指定递归深度
options: 二进制掩码,目前只支持 JSON_BIGINT_AS_STRING 。
数据表CREATE TABLE `receivemsg` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`eventType` varchar(4) DEFAULT '4' COMMENT '值为4,表示是聊天室消息',
`attach` tinytext COMMENT '消息内容',
`ext` tinytext COMMENT '第三方扩展字段, 格式不限,长度限制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) DEFAULT NULL COMMENT '消息所属的聊天室id,可转为Long型数据',
`antispam` varchar(6) DEFAULT '' COMMENT '标识是否被反垃圾,仅在被反垃圾时才有此字段,可转为Boolean类型数据',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8 COMMENT='聊天室消息表';
php mysql 站内消息_php如何开发网易云信消息抄送功能之聊天室消息保存到本地数据库...相关推荐
- vue+websocket+nodejs实现聊天室 - 消息已读未读
前言 上一篇讲了聊天室增加一对一单聊,这次讲如何新增已读未读状态. 大概思路: 服务器返回消息列表,增加参数status为1,单聊和群聊通过过滤状态区分对应未读数量,当前聊天,直接在currentMe ...
- 《Android Studio开发实战》学习(二)- 聊天室
<Android Studio开发实战>学习(二)- 聊天室 背景 聊天室布局文件的编写 聊天室代码文件的编写 运行结果 背景 在前一篇文章 1中实现了使用Android Studio开发 ...
- Asp.Net Mvc基于Fleck开发的多人网页版即时聊天室
一.项目的核心说明 1.Fleck这个是实现websocket一个比较简单第三方组件,它不需要安装额外的容器.本身也就几个接口可供调用. 2.项目是基于.net framework 4.7.2 ,在v ...
- Android开发笔记(一百一十一)聊天室中的Socket通信
Socket通信 基本概念 对于程序开发来说,网络通信的基础就是Socket,但因为是基础,所以用起来不容易,今天我们就来谈谈Socket通信.计算机网络有个大名鼎鼎的TCP/IP协议,普通用户在电脑 ...
- Web聊天室消息[已读未读]的实现
聊天室快速访问 继上次完成聊天室的历史记录功能后,我又想着实现聊天记录的已读未读功能.(轻喷..) 开始之前 首先我看了抖音和钉钉这两款应用的消息已读未读功能的呈现效果.首先是抖音,在聊天界面,给好友 ...
- Linux下后台服务器开发_基于多线程的一对一QQ聊天室
废话不多说直接上干货 1.目标 在实现回声服务器和客户端后 ,基于多线程设计一对一的聊天室 2.功能 在本机上实现客户端与服务器的实时聊天测试 以达到练习强化socket通信/多线程技术的目的 3.测 ...
- python爬取链家房价消息_Python的scrapy之爬取链家网房价信息并保存到本地
因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 爬虫结构: 其中封装了一个数据库处理模 ...
- 网易云信IM即时通讯PHP接口开发
网易云信:https://www.163yun.com 注册地址:https://app.netease.im/regist 登录地址:https://app.netease.im/login 架构设 ...
- mysql群发消息_分享网站群发站内信数据库表设计
本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...
最新文章
- sql 使用identity(int,1,1)来产生行号。
- [转]学习Objective-C: 入门教材
- shape(15,)与(15,1)的区别
- 教你如何用node.js开发微信公众号(一)
- 【LOJ】#2184. 「SDOI2015」星际战争
- 使用Python音频双通道分离
- Linux snmp 时间戳,linux snmp计数器汇总
- 5G 登上“神坛”,区块链裁员求生!
- Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
- 那些年我们看不懂的论文
- 【虚拟机】如何判断CPU是否支持硬件虚拟化
- 获取本地视频url的方法
- marked转换html失败,JavaScript使用marked.js在线Markdown转HTML
- 一年级课程表(3月14日-3月18日)
- 计算机走进画图世界课件,第一单元走进画图世界.doc
- WinRAR分卷压缩与解压缩
- Ranking 排行
- PAT顶级 1003 Universal Travel Sites (35分)(最大流)
- 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 7月23日
- 百度地图从后台获取实时坐标点以实现车辆实时跟踪