在开发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如何开发网易云信消息抄送功能之聊天室消息保存到本地数据库...相关推荐

  1. vue+websocket+nodejs实现聊天室 - 消息已读未读

    前言 上一篇讲了聊天室增加一对一单聊,这次讲如何新增已读未读状态. 大概思路: 服务器返回消息列表,增加参数status为1,单聊和群聊通过过滤状态区分对应未读数量,当前聊天,直接在currentMe ...

  2. 《Android Studio开发实战》学习(二)- 聊天室

    <Android Studio开发实战>学习(二)- 聊天室 背景 聊天室布局文件的编写 聊天室代码文件的编写 运行结果 背景 在前一篇文章 1中实现了使用Android Studio开发 ...

  3. Asp.Net Mvc基于Fleck开发的多人网页版即时聊天室

    一.项目的核心说明 1.Fleck这个是实现websocket一个比较简单第三方组件,它不需要安装额外的容器.本身也就几个接口可供调用. 2.项目是基于.net framework 4.7.2 ,在v ...

  4. Android开发笔记(一百一十一)聊天室中的Socket通信

    Socket通信 基本概念 对于程序开发来说,网络通信的基础就是Socket,但因为是基础,所以用起来不容易,今天我们就来谈谈Socket通信.计算机网络有个大名鼎鼎的TCP/IP协议,普通用户在电脑 ...

  5. Web聊天室消息[已读未读]的实现

    聊天室快速访问 继上次完成聊天室的历史记录功能后,我又想着实现聊天记录的已读未读功能.(轻喷..) 开始之前 首先我看了抖音和钉钉这两款应用的消息已读未读功能的呈现效果.首先是抖音,在聊天界面,给好友 ...

  6. Linux下后台服务器开发_基于多线程的一对一QQ聊天室

    废话不多说直接上干货 1.目标 在实现回声服务器和客户端后 ,基于多线程设计一对一的聊天室 2.功能 在本机上实现客户端与服务器的实时聊天测试 以达到练习强化socket通信/多线程技术的目的 3.测 ...

  7. python爬取链家房价消息_Python的scrapy之爬取链家网房价信息并保存到本地

    因为有在北京租房的打算,于是上网浏览了一下链家网站的房价,想将他们爬取下来,并保存到本地. 先看链家网的源码..房价信息 都保存在 ul 下的li 里面 ​ 爬虫结构: ​ 其中封装了一个数据库处理模 ...

  8. 网易云信IM即时通讯PHP接口开发

    网易云信:https://www.163yun.com 注册地址:https://app.netease.im/regist 登录地址:https://app.netease.im/login 架构设 ...

  9. mysql群发消息_分享网站群发站内信数据库表设计

    本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...

最新文章

  1. sql 使用identity(int,1,1)来产生行号。
  2. [转]学习Objective-C: 入门教材
  3. shape(15,)与(15,1)的区别
  4. 教你如何用node.js开发微信公众号(一)
  5. 【LOJ】#2184. 「SDOI2015」星际战争
  6. 使用Python音频双通道分离
  7. Linux snmp 时间戳,linux snmp计数器汇总
  8. 5G 登上“神坛”,区块链裁员求生!
  9. Docker 容器与宿主机网段冲突导致网络无法 ping 通的解决方案
  10. 那些年我们看不懂的论文
  11. 【虚拟机】如何判断CPU是否支持硬件虚拟化
  12. 获取本地视频url的方法
  13. marked转换html失败,JavaScript使用marked.js在线Markdown转HTML
  14. 一年级课程表(3月14日-3月18日)
  15. 计算机走进画图世界课件,第一单元走进画图世界.doc
  16. WinRAR分卷压缩与解压缩
  17. Ranking 排行
  18. PAT顶级 1003 Universal Travel Sites (35分)(最大流)
  19. 今日简报 每日精选12条新闻简报 每天一分钟 知晓天下事 7月23日
  20. 百度地图从后台获取实时坐标点以实现车辆实时跟踪

热门文章

  1. 9款好用的bi数据可视化工具
  2. Mysql引擎的知识
  3. 【Python数据类型展示】
  4. android usb 默认mtp,usb修改为默认MTP模式
  5. Java中 9 种常见的 CMS GC 问题分析与解决
  6. 小程序可以删除或者注销吗
  7. 【NLP】1、nlp各类中文文本语料库
  8. 【软件工程】-软件过程
  9. 2范数和F范数的区别
  10. VS2015 + QT 编译出现public: virtual struct QMetaObject const * __thiscall 错误