即时通讯简单步骤
Socket:
1>Socket又称"套接字”
2>网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。
UDP(用户数据报协议)
1.HTTP 底层就是通过socket建立连接通信管道,实现数据传输
2.HTTP是一个TCP的传输协议(方式),它是一个可靠,安全的协议
传输格式:假设:这是假设,实际http的格式不是这样的。
http1.1,content-type:multipart/form-data,content-length:188,body:username=zhangsan&password=123456
可扩展消息处理现场协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线现场探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息
传输格式:
<from>zhangsan<from>
<to>lisi<to>
<body>一起吃晚上</body>
{
“from”:”zhangsan”,
”to”:”lisi”,
”body”:”中午一起吃饭”
}
即时通讯 :即时通讯,又称实时通讯
/* *registerSDKWithAppKey: 区别app的标识,开发者注册及管理后台 apnsCertName: iOS中推送证书名称。制作与上传推送证书 */ //环信的初始化 // [[EaseMob sharedInstance] registerSDKWithAppKey:@"vgios#hxchat" apnsCertName:@””]; //环信的初始化 并隐藏日志输出 [[EaseMob sharedInstance] registerSDKWithAppKey:@"vgios#hxchat" apnsCertName:@"" otherConfig:@{kSDKConfigEnableConsoleLogger:@(NO)}];
环信登录:
注册:
[[EaseMob sharedInstance].chatManager asyncRegisterNewAccount:”vgios1” password:”123456” withCompletion:^(NSString *username, NSString *password, EMError *error) { NSLog(@"error:%@ username:%@ pwd:%@",error,username,password); } onQueue:nil];
自动登录:
[[EaseMob sharedInstance].chatManager setIsAutoLoginEnabled:YES];
/*! @method @brief 将要发起自动重连操作时发送该回调 @discussion @result */ - (void)willAutoReconnect; /*! @method @brief 自动重连操作完成后的回调(成功的话,error为nil,失败的话,查看error的错误信息) @discussion @result */ - (void)didAutoReconnectFinishedWithError:(NSError *)error;
EMChatManagerBuddyDelegate:
环信消息发送的流程
1.先把记录保存到Conversation表
2.接着发送网络请求,API如下
[[EaseMob sharedInstance].chatManager asyncSendMessage:message progress:self prepare:^(EMMessage *message, EMError *error) { KSLog(@"prepare %@",message.messageBodies); } onQueue:nil completion:^(EMMessage *message, EMError *error) { KSLog(@"完成 %@",message.messageBodies); } onQueue:nil];
显示聊天消息:
// 1.获取所有历史会话 NSArray *conversations = [[EaseMob sharedInstance].chatManager conversations]; // 2.如果内存中,没有会话,从数据库中加载 if (conversations.count == 0) { conversations = [[EaseMob sharedInstance].chatManager loadAllConversationsFromDatabaseWithAppend2Chat:YES]; }
设置消息为已读:
// 设置当前会话所有消息都为已读 [self.conversation markAllMessagesAsRead:YES]; // 设置某条消息为已读 [self.conversation markMessageWithId:<#(NSString *)#> asRead:<#(BOOL)#>]
准备工作:
// 开始录音 [[EMCDDeviceManager sharedInstance] asyncStartRecordingWithFileName:fileName completion:^(NSError *error){ if (error) { KSLog( @"failure to start recording"); } }]; // 结束录音 [[EMCDDeviceManager sharedInstance] asyncStopRecordingWithCompletion:^(NSString *recordPath, NSInteger aDuration, NSError *error) { KSLog(@"%@",recordPath); }];
发送录音:
// 语音对象 EMChatVoice *voice = [[EMChatVoice alloc] initWithFile:filePath displayName:@"audio"]; // 消息体 EMVoiceMessageBody *body = [[EMVoiceMessageBody alloc] initWithChatObject:voice]; EMMessage *message = [[EMMessage alloc] initWithReceiver:self.buddy.username bodies:@[body]]; message.messageType = eMessageTypeChat;// 私聊 // 不加密 message.requireEncryption = NO;
播放录音:
[[EMCDDeviceManager sharedInstance] asyncPlayingWithPath:filePath completion:^(NSError *error) { NSLog(@"播放完成%@",error); }];
[[EaseMob sharedInstance].chatManager asyncLogoffWithUnbindDeviceToken:YES completion:^(NSDictionary *info, EMError *error) { if (!error) {//退出成功 }else{//退出失败; } } onQueue:nil];
是否使用过XMPP,XMPP的实现原理:
转载出处:https://blog.csdn.net/qq_35247219/article/details/52070700
相关文章
- 2022/1/21-2022/2/5
2022/1/21 通过列表的find方法获取指定用户的上班列表 业务逻辑说来不过增删改查,add,remove,list等,get,post,delete都是可以照着模仿的。 像 : click " show true " showtrue就是一个表达式, 相当于 click“f(n)” f(n)就是 s…...
2023/3/26 20:35:02 - GUI snake贪吃蛇Java小游戏
githup Data类 package com.company.snake;import javax.swing.*; import java.net.URL;//数据中心 public class Data {//绝对路径 ctrlalto 补全包public static URL headerURL Data.class.getResource("statics/material/header.png");public static ImageIcon…...
2023/3/26 20:32:18 - 苏宁!你还挺得过去吗?(苏宁大幅裁员)
前两天才写了一篇《作为一个江苏人,我眼中的苏宁》, 说实话,我内心是有点不太相信,偌大的苏宁会走到今天这步田地。 可一件件传闻都慢慢变成了实锤! 一、苏宁大裁员 一位多年老友刚跳槽去了苏宁; 入职一…...
2023/3/26 20:13:44 - 我爸说我应该感恩
是的,我知道,这个世界很多人都帮过我。 但是,面对家里的那些亲戚,我知道我不理他们,他们也没有义务理我。 我应该记住感恩。别人的生活,我并没有深入接触,我不了解。我的生活,我的选…...
2023/3/26 20:10:21 - CSDN博客的简易使用
CSDN博客简易使用 在CSDN上写博客,总是遇到很多问题,虽然这些问题很简单,但是对于新手来说,缺经常遇到,因此写篇博客记载。 一、CSDN的博客如何上传图片 如果有现成的 图片就选择文件路径,没有是截图的话&…...
2023/3/26 20:00:03 - 手把手教你机器学习之支持向量机
1.支持向量机SVM的基本原理: SVM就是解决线性不可分的算法。 将数据投射到高维空间,这正是SVM算法的核函数的功能. 在SVM中用得最普遍的两种把数据投射到高维空间的方法分别是多项式内核和径向基内核(RBF)。其中多项式内核比较容…...
2023/3/26 19:42:24 - Java 处理流--转换流(InputStreamReader和OutputStreamWriter)
转换流的两种形式: 1.InputStreamReader:将字节流转换成字符流。 public OutputStreamWriter(OutputStream out, String charsetName) 2.OutputStreamWriter:将字符流转换成字节流。 public InputStreamReader(InputStream in, String char…...
2023/3/26 19:36:33 - c# UpdatePanel 用法
1 前台必须添加 2 前台 3 后台...
2023/3/26 19:35:11 - Android文件操作工具类,拿去用吧!
五一放假了,作为一个外地狗,就别想回家了,还是在学校搞点东西吧!花了一天的时间,写了一个比较完善的文件管理工具类,希望小伙伴们能用上,有关于文件的常见操作,,一个我们…...
2023/3/26 19:26:46 - sql怎么发音mysql_[原创]SQL发音考证(搜寻SQL-86标准)
据我观察,中国的开发者创造了一种独特的SQL发音:/sɜːkl/,既好听,又好读,挺好的。但是今年我开始做数据库相关的工作,作为一个专业人士,决定对SQL发音进行一些考证。直接说结论吧,很…...
2023/3/26 19:19:44 - web前端:自定义视频播放器,原生js实现窗口自适应,视频/音量进度条应用
1.less页面包装,引用混合 //导入播放器基础css import "reset.less"; //定义进度条混合 .progress-bar-position() {position: relative; }.progress-bar-line() {//定位:位置不变position: absolute;//进度条:height:…...
2023/3/26 19:18:14 - train_test_split用法总结
sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split 一般形式: train_test_spli…...
2023/3/26 19:15:53 - 电磁兼容EMC详解及测试流程
一、电磁兼容EMC概念 EMC,全称为Electromagnetic Compatibility,即电磁兼容性;是指设备或系统在其电磁环境中能正常工作且不对该环境中任何事物构成不能承受电磁骚扰的能力。 因此,EMC包括两个方面的要求:一方面是指设备在正常运行过程中对所在环境产生的电磁干扰不能超过…...
2023/3/26 19:14:15 - 设计师计算机配置,超全面!写给设计师的电脑配置攻略之PS篇
对于设计师而言,电脑是吃饭的工具,如果工具不趁手,势必事倍功半。我相信大多数准备入行或已经工作多年的设计师,都明白这个道理。但是,大多数人对于怎么选配适合设计、适合自己的电脑存在很大的误区,或者完…...
2023/3/26 18:59:36 - Android UI--ViewPager扩展Tab标签指示,android开发网上购物app
布局搞定之后,定义一个适配器如下: package com.wwj.viewpager; import java.util.List; import android.support.v4.view.PagerAdapter; import android.view.View; import android.view.ViewGroup; /** ViewPager适配器 author wwj */ publi…...
2023/3/26 18:52:40 - 安卓apk 反编译为 Java源码图文教程
前言: 近来在模仿写一个app,可惜只有apk,没找到源码,只好进行反编译,特记录于此,供人参考。 测试环境:win10 64位 工具: apktool(链接:https://pan.baid…...
2023/3/26 18:50:52 - Vue基础学习
引自:https://mrbird.cc/Vue-Learn-Note.html mrbird大佬博客 Vue 入门 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>todoList</title><script src"https://cdn.jsdelivr…...
2023/3/26 18:49:30 - UpdatePanel的简单用法(非嵌套)
ScriptManager和UpdatePanel控件联合使用可以实现页面局部异步刷新的效果。UpdatePanel用来设置页面中局部异步刷新的区域,它必须依赖于ScriptManager,因为ScriptManager控件提供了客户端脚本生成与管理UpdatePanel的功能。 ScriptManager属性解释Enabl…...
2023/3/26 18:42:06 - 简述Mean shift 算法及其实现
文章目录Mean shift 是什么Mean shift 算法的预备知识什么是特征什么是特征空间什么是核密度估计核函数的表示Mean shift 算法Mean shift算法的公式推导Mean shift算法的流程Mean shift算法图示Mean shift 算法应用Mean Shift 算法应用在聚类Mean Shift 算法图像分割Mean shift…...
2023/3/26 18:42:02 - DHCP工作原理
DHCP工作原理图DHCP关键知识点DHCP服务器数据传输的端口为UDP67DHCP客户机数据传输的端口为UDP68客户机的源IP地址为:0.0.0.0客户机的目的IP地址:255.255.255.255DHCP过程详解发现阶段:DHCP客户机获取网络中DHCP服务器信息的阶段提供阶段:DHCP SERVER向DHCP客户机提供预分配…...
2023/3/26 18:41:22
最新文章
- 即时通讯简单步骤
Socket: 1>Socket又称"套接字” 2>网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。3>应用程序通常通过"套接字"向网络发出请求或者应答网络请求网络通信的要素:1>网络上的请求就是通过Socket来建…...
2023/3/26 20:35:36 - windows系统中安装maven用来编译项目
1为什么要安装maven 作为一个编程小白,我们先看一下以前学java的时候,下载一个项目源码,是不是需要把所依赖的第三方jar包一起跟着源码打包放一起,这样别人的代码才能运行起来。这种方式不利于对jar包的管理,后来就出现…...
2023/3/26 20:35:27 - 蓝桥杯刷题013——小猪存钱罐
【题目描述】 Byteazar the Dragon 拥有 N 个小猪存钱罐。每一个存钱罐能够用相应的钥匙打开或者被砸开。Byteazar 已经将钥匙放入到一些存钱罐中。现在已知每个钥匙所在的存钱罐,Byteazar 想要买一辆小汽车,而且需要打开所有的存钱罐。然而,…...
2023/3/26 20:35:12 - 讲讲团队工程化内的规范化
最近碰到很多很多及其不规范的代码,看的简直会爆炸,重复代码、疯狂ifelse语句、逻辑语句不做模块,文件乱扔不整理类别等等,那么这篇文章我就去讲一些,怎么去注意或者实现我们的前端团队的规范化呢? 先来看图…...
2023/3/26 20:35:04 - 3. 投票 案例项目(合集)
3.投票-1创建项目和子应用 创建项目 命令$ python django-admin startproject mysite 目录结构mysite/ # 项目容器、可任意命名manage.py # 命令行工具mysite/ # 纯 Python 包 # 你引用任何东西都要用到它__init__.py # 空文件 告诉Python这…...
2023/3/26 20:35:03 - 2022/1/21-2022/2/5
2022/1/21 通过列表的find方法获取指定用户的上班列表 业务逻辑说来不过增删改查,add,remove,list等,get,post,delete都是可以照着模仿的。 像 : click " show true " showtrue就是一个表达式, 相当于 click“f(n)” f(n)就是 s…...
2023/3/26 20:35:02 - 排队论模型(五): 有限源排队模型、服务率或到达率依赖状态的排队模型
排队论模型(一):基本概念、输入过程与服务时间的常用概率分布 排队论模型(二):生灭过程 、 M / M /s 等待制排队模型、多服务台模型 排队论模型(三):M / M / s/ s 损失…...
2023/3/26 20:35:00 - 【DropBlock】《DropBlock:A regularization method for convolutional networks》
NIPS-2018 文章目录1 Background and Motivation2 Related Work3 Advantages / Contributions4 DropBlock5 Experiments5.1 ImageNet Classification5.1.1 DropBlock in ResNet-505.1.2 DropBlock in AmoebaNet5.2 Experimental Analysis5.3 Object Detection in COCO5.4 Seman…...
2023/3/26 20:35:00 - (C语言)背答案
[#4练习赛]背答案 题目描述 传智专修学院“Java程序设计”的期末考试来源于一个选择库,共有 nnn 道题目,每道题目由问题和答案组成,都是一个字符串,保证所有题目题面互不相同。这个题库已经发给同学进行备考准备。 正式考试中&…...
2023/3/26 20:35:00 - 课程规范性要求
课程制作规范 图片规范 允许范围:CC协议 / 作者授权 / 网站代理授权书 图片大小要求:1600 x 1200 dpi 图片长宽比:4:3 每章节格式要求 Week number 本周目标 1.通过背景学习,了解四足机器狗mini pupper上的微型控…...
2023/3/26 20:34:56 - loop为true, slidesPerView为多个的时候,swiper精准获取激活的索引
效果图如下: 重点代码如下: <script>var swiper new Swiper(.swiper-container, {slidesPerView: 3, //显示几个slidespaceBetween: 30, //slide之间的间距centeredSlides: true,loop: true, //开启循环滚动initialSlide: 0, //默认就是0p…...
2023/3/26 20:34:55 - azure kinect标定文件_Kinect2.0相机标定
尝试进行Kinect2.0相机进行标定1. Color镜头标定$(u_{rgb},v_{rgb},1)W_{rgb}*(x,y,z)$Calibration results after optimization (with uncertainties):Focal Length: fc [1094.03583 1087.37528] /- [55.02816 51.42175]Principal point: cc [942.00992 530.35240] /- [13.001…...
2023/3/26 20:34:55 - Php api 框架
PHP框架是不是网站后台?不是一个东西,php框架有助于促进快速开发网站,节约时间,有助于创建更为稳定的程序,并减少开发者的重复编写代码的劳动php框架可以开发网站后台,也可以开发前台PHP做的网站要求带后台的,这个是不是要搭框架的现在做php开发的,有多少还是在用原生写…...
2023/3/26 20:34:54 - 中国移动ZN-M160G光猫超级密码破解 | 河南移动兆能光猫超管密码获取 | 中国移动光猫如何开启UPnP功能
文章目录1. 按2. 重设光猫超管密码3. 开启UPnP功能1. 按 首先应确保设备型号是ZN-M160G,这点可以通过观察光猫底部的铭牌或者访问http://192.168.1.1/查看网页标题,因为本教程是基于兆能的这款ZN-M160G光猫进行操作的,其他的光猫(…...
2023/3/26 20:34:52 - PreferenceFragment的简单用法
请勿转载,辛苦之作,转载注明此文来自http://write.blog.csdn.net/postedit 此处针对android3.0以后,更加倾向于使用PreferenceFragment而不再使用PreferenceActivity,因为PreferenceFragment更加灵活,此处主要使用两个方法即可达…...
2023/3/26 20:34:51 - phpipam开源IP地址管理系未授权XSS漏洞复现(CVE-2017-6481)
目录 1.漏洞概述 2.影响版本 3.漏洞等级 4.漏洞复现 4.1 POC 1 4.2 Nuclei POC 1...
2023/3/26 20:34:47 - 从技术、产品、运营3个维度详尽阐述从0到1搭建用户画像系统
通过阅读以下原文获取下载链接。 从技术、产品、运营3个维度详尽阐述从0到1搭建用户画像系统 1 简介 本书借助数据仓库实现一套用户画像系统的方案。从实际工程案例出发,结合多业务场景,内容涵盖开发离线批处理计算的标签及流式计算标签&am…...
2023/3/26 20:34:44 - C语言:预处理(1)
程序的翻译环境和执行环境 在ANSI C的任何一种实现中,存在两个不同的环境: 第一种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第二种是执行环境,它用于实际执行代码。 翻译环境: 组成一个程序的每个…...
2023/3/26 20:34:39 - android设置中常用的PreferenceActivity用法介绍
PreferenceActivity它包含了许多类似控件的东西来表示不同的设置需求如分类设置,选择框设置,下拉列表设置,编辑框设置,铃声设置,而且这些设置不需要我们自己来保存用户设置的数据,它自己会将数据保存在xml文…...
2023/3/26 20:34:25 - C# 锁汇总
一、前言 本文章汇总c#中常见的锁,基本都列出了该锁在微软官网的文章,一些不常用的锁也可以参考微软文章左侧的列表,方便温习回顾。 二、锁的分类 2.1、用户模式锁 1、volatile 关键字 volatile 并没有实现真正的线程同步,操作级…...
2023/3/26 20:34:04