精华内容
下载资源
问答
  • IM 即时通讯 实现实时视频通话
  • uniapp IM 即时通讯 源码 私有云服务、无第三方服务,方便二开 可支持数十万并发连接、数据加密传输 一套代码 支持 Android, IOS, h5 IM 即时通讯

    仿微信 uniapp IM 即时通讯 源码 & 即时通讯知识小科普

    • 源码,不加密,方便二开!
    • 私有云服务,高效稳定,数据安全,无第三方服务
    • 拓展性强,可拓展任意的消息体类型!
    • 性能优秀,资源足单机可并发数十万连接!
    • 支持所有后端语言!非Java可通过restful 直接接入!
    • 服务端直接sdk接入,不侵入代码,支持接入自己的用户体系!
    • 一次编码,支持多端,真正省成本!
      – APP端(支持ios android h5) 使用 uni-app 开发,
      – 桌面端(支持window, mac, linux) 使用js + css + vue 开发
      – APP与桌面端由于都是使用同样的技术,因此只要一端开发完成,就可以直接复制到另外一端!
      IM 即时通讯

    在这里插入图片描述

    在这里插入图片描述

    IM即时通讯 - 功能介绍

    个人模块

    名称功能介绍
    修改修改密码、头像、昵称
    我的二维码可以通过扫描二维码添加好友

    用户模块

    名称功能介绍
    登录、注册、退出登录、注册、退出
    好友列表查看好友列表、群列表
    添加好友可以搜索添加好友、使用扫一扫添加好友
    好友操作删除好友、备注、推荐好友
    扫一扫通过扫一扫添加好友、添加群
    建群创建群

    单聊/群聊

    名称功能介绍
    文字纯文字信息的发送,支持复制、转发、删除、搜一搜
    图片本地相册选择、拍摄照片
    表情表情包
    语音语音对讲功能
    视频短视频录制发送、本地视频发送
    地图支持定位。查看定位,可跳转到高德地图、百度地图、内置地图。位置分享
    链接支持直接点击链接查看、网页链接分享
    消息支持删除、回撤、转发。转发到单群或多个群。转发到单个好友或多个好友。
    发送名片支持名片发送
    删除会话删除会话
    删除聊天记录删除聊天记录

    群聊

    名称功能介绍
    修改群名群主修改群名
    查看群成员查看群成员
    邀请群成员可设置为只能群主或管理员才能添加群成员
    删除群成员只能群主或管理员才能删除群成员
    群二维码群二维码可用于扫描进群
    群邀请设置设置只能群主或管理员才能添加群成员
    禁止群成员添加好友禁止群成员之间互相添加为好友
    全员禁言支持设置只能群主或管理员发言,也可以设置单个成员禁言
    添加群管理员群主添加群管理员
    解散群组群主解散群组
    退出群组退出群组
    @群成员@群成员

    系统消息

    名称功能介绍
    聊天消息提醒消息提醒,显示消息类型
    新朋友消息提醒有人添加好友时,提醒新朋友消息
    推送本地消息推送

    在线客服

    名称功能介绍
    在线客服在线客服

    什么是即时通讯(即时通信)

    即时通信(即时通讯)是指互联网上用以进行实时通讯的系统服务,其允许多人使用即时通信(即时通讯)软件实时的传递文字信息、文档、语音以及视频等信息流。 随着软件技术的不断提升以及相关网络配套设施的完善,即时通信(即时通讯)软件的功能也日益丰富,除了基本通讯功能以外,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能, 而这些功能也促使即时通信(即时通讯)已经不再是一个单纯的聊天工具,它已经是成功具有交流、娱乐、商务办公、客户服务等特性的综合化信息平台。

    微软、腾讯、AOL、Yahoo等重要即时通信(即时通讯)提供商都提供通过手机接入互联网即时通信(即时通讯)的业务,用户可以通过手机与其他已经安装了相应客户端软件的手机或电脑收发消息。

    即时通信(即时通讯)的技术原理

    即时通信(即时通讯)是一种基于Internet 的通信技术, 涉及到IP/TCP/UDP/Sockets、P2P、C/S、多媒体音视频编解码/传送、Web Service等多种技术手段。 无论即时通信(即时通讯)系统的功能如何复杂,它们大都基于相同的技术原理,主要包括客户/服务器(C/S)通信模式和对等通信(P2P)模式。

    C/S结构以数据库服务为核心将连接在网络中的多个计算机形成一个有机的整体,客户机(Client)和服务器(Server)分别完成不同的功能。 但在客户/服务器结构中,多个客户机并行操作,存在更新丢失和多用户控制问题。因此,在设计时要充分考虑信息处理的复杂程度来选择合适的结构。 实际应用中,可以采用三层C/S结构,三层C/S结构与中间件模型非常相似,由基于工作站的客户层、基于服务器的中间层和基于主机的数据层组成。 在三层结构中,客户不产生数据库查询命令,它访问服务器上的中间层,由中间层产生数据库查询命令。 三层C/S结构便于工作部署,客户层主要处理交互界面,中间层表达事务逻辑,数据层负责管理数据源和可选的源数据转换。

    P2P模式是非中心结构的对等通信模式,每一个客户(Peer)都是平等的参与者,承担服务使用者和服务提供者两个角色。客户之间进行直接通信,可充分利用网络带宽,减少网络的拥塞状况,使资源的利用率大大提高。 同时由于没有中央节点的集中控制,系统的伸缩性较强,也能避免单点故障,提高系统的容错性能。但由于P2P网络的分散性、自治性、动态性等特点,造成了某些情况下客户的访问结果是不可预见的。 例如,一个请求可能得不到任何应答消息的反馈。

    当前使用的IM系统大都组合使用了C/S和P2P模式。在登录IM进行身份认证阶段是工作在C/S方式, 随后如果客户端之间可以直接通信则使用P2P方式工作, 否则以C/S方式通过IM服务器通信。 举例来说,在图1中,用户A希望和用户B通信,必须先与IM服务器建立连接,从IM服务器获取到用户B的IP地址和端口号,然后A向B发送通信信息。 B收到A发送的信息后,可以按照A的IP和端口直接与其建立TCP连接,与A进行通信。 此后的通信过程中,A与B之间的通信则不再依赖IM服务器,而采用一种对等通信(P2P)方式。 由此可见,即使通信系统结合了C/S模式与P2P模式,也就是首先客户端与服务器之间采用C/S模式进行通信,包括注册、登录、获取通信成员列表等,随后,客户端之间可以采用P2P通信模式交互信息。

    即时通信(即时通讯)软件及其分类

    垂直即时通信(即时通讯)工具

    垂直即时通信(即时通讯)工具指用户针对性较强,其往往由其他互联网服务带动兴起,如门户型即时通信(即时通讯)工具网易泡泡、新浪UC。而近期随着电子商务、搜索、博客的兴起,一批新兴即时通信(即时通讯)工具也应运而生。其中,百度 Hi、阿里旺旺尤为突出。垂直即时通信(即时通讯)工具的优势在于与其他互联网服务的结合,而这种结合又为其互联网服务的潜在价值挖掘创造了条件,不同即时通信(即时通讯)软件的发展重点。

    综合类即时通信(即时通讯)工具

    综合类即时通信(即时通讯)软件指用户群体以及用途并没有明显特征,该类型最典型的软件是腾讯QQ和微软 MSN Messenger。从软件的历史分析,综合类即时通信(即时通讯)软件出现时间较早,在功能以及用户规模上均有较好的积累,而这种积累也为其潜在价值的挖掘创造了便利条件。以QQ为例,通过庞大的用户积累以及门户、游戏、博客等服务的引入,均取得了良好的效果,其中网络游戏市场份额更是超过盛大,成为市场第一。

    跨网络即时通信(即时通讯)工具

    跨网络即时通信(即时通讯)指其信息传输网络除了互联网之外,还将传统电信网络纳入其中。受到国家电信政策的影响,目前真正实现跨网络的即时通信(即时通讯)软件并不多, 其中最典型的是Skype。Skype最大的优势在于除了电脑与电脑的信息沟通以外,能够使用户通过电脑上网实现电脑对固定电话和手机的沟通。 虽然通话功能强于其他即时通信(即时通讯)软件,但是Skype 毕竟是一种互联网服务,而不是真正的电信服务,它也存在一些问题,如市场定位、通话安全性等等。

    跨平台即时通信(即时通讯)工具

    跨平台即时通信(即时通讯)软件指其信息传送平台已经不止局限在互联网以及电脑客户端,手机以及移动互联网络也成为即时通信(即时通讯)服务的载体之一。实际上目前主流综合性即时通信(即时通讯)工具均可以通过电脑或者手机使用,但真正实现与手机“无缝连接”的工具则是移动飞信。移动飞信发展迅速,在3年左右的时间里用户渗透率已经高达20.5%,用户规模已经占据市场第二的位置。飞信最大的优势在于与移动手机的结合以及免费使用手机短信沟通。

    展开全文
  • IM即时通讯java源码,附部署视频
  • IM 即时通讯软件

    2012-10-20 14:56:32
    IM 即时通讯软件,具有视频通讯,语音聊天,视频会议,传送文件,收发短信,传真等。
  • IM即时通讯

    2019-08-23 11:44:03
    国内主流IM即时通讯平台综合评测 1 网易云信 https://netease.im/ 2 环信 https://www.easemob.com/ 3 融云 https://www.rongcloud.cn/ 4 极光 https://www.jiguang.cn/ 5 容联云通讯 https://www.yuntongxun.com/ 6...

    国内主流IM即时通讯平台综合评测

    1 网易云信

    https://netease.im/

    2 环信

    https://www.easemob.com/

    3 融云

    https://www.rongcloud.cn/

    4 极光

    https://www.jiguang.cn/

    5 容联云通讯

    https://www.yuntongxun.com/

    6 LeanCloud

    https://leancloud.cn/

    7 亲加通讯云

    http://www.gotye.com.cn/

    8 aurora-imui 通用的即时通讯(IM)UI 库

    Aurora IMUI 是个通用的即时通讯(IM)UI 库,不特定于任何 IM SDK。

    本 UI 库提供了消息列表、输入视图等常用组件,支持常见的消息类型:文字、图片、语音、视频等。默认包含多套界面风格,也能根据自己的需要自定义。

    项目地址:https://github.com/jpush/aurora-imui/blob/master/README_zh.md

    9 国内主流IM即时通讯平台综合评测

    相关参考资料来源于 企业服务汇
    http://www.chiefmore.com/yuntongxun/3643.jhtml

    服务平台IM即时通讯功能服务与性能IM即时通讯功能接入与部署方式IM即时通讯功能收费
    环信目前环信可以提供比较完善的人与人之间的聊天与消息功能,不过在人与智能机器人聊天方面仅支持最基础的机器人服务,适用于在线客服类产品,在这一点上与容联云通讯和网易云信相比有一定的不足。在这四家服务商中,环信唯一提供React Native demo接口来方便企业集成实现其IM功能,这对于一些使用JavaScript和React来开发原生的iOS和Android产品应用的企业来说十分友好,它可以帮助企业有效提升产品IM功能的开发效率;另外环信支持上述全部的公有云、私有云、专有云、托管云以及海外部署方式,企业在部署时面临的选择性非常灵活目前环信、容联云通讯、极光推送、网易云信这四家云通讯平台,在IM即时通讯功能的收费价格方面,均按照基础IM功能(通常按照产品日活数收费)、增值IM功能(最典型的是实时音视频通话功能,按照使用分钟数收费)以及扩展IM功能分别进行收费。企业在选购时,需要根据自己的产品类型、实际需要的IM即时通讯功能以及实际的产品日活数来进行综合选择。
    容联云通讯目前容联云通讯提供非常丰富的聊天与消息功能支持人与智能机器之间的单聊、群聊以及闲聊语料、天气查询等个性化聊天功能,可有效提升用户使用体验和产品活跃度;不过容联云通讯在性能水平方面,目前暂不支持智能反垃圾服务和敏感词过滤服务,企业对于用户在聊天过程中产生的消息可能无法做到有效的实时监控,从而不利于企业构建良好的网络聊天环境目前容联云通讯仅支持最基础的接入方式,并且还支持专有云部署方式,与其他服务商相比并无特别之处。目前环信、容联云通讯、极光推送、网易云信这四家云通讯平台,在IM即时通讯功能的收费价格方面,均按照基础IM功能(通常按照产品日活数收费)、增值IM功能(最典型的是实时音视频通话功能,按照使用分钟数收费)以及扩展IM功能分别进行收费。企业在选购时,需要根据自己的产品类型、实际需要的IM即时通讯功能以及实际的产品日活数来进行综合选择。
    极光目前极光推送不提供聊天室功能(在视频直播类产品中经常用到)、实时音视频通话功能(在熟人社交/在线教育/在线医疗等需要直接通话才能实现有效沟通的产品中经常用到)以及人与智能机器人聊天等功能仅可以为企业提供最基础的聊天与消息功能,与其他服务商相比具有较为明显的不足,因此仅能够满足企业产品最基本的IM即时通讯需求,适用于有轻量级的IM即时通讯功能需求的企业目前与其他三家服务商相比,极光推送支持的接入与部署方式均是最少的,在这一点上有一定的不足。目前环信、容联云通讯、极光推送、网易云信这四家云通讯平台,在IM即时通讯功能的收费价格方面,均按照基础IM功能(通常按照产品日活数收费)、增值IM功能(最典型的是实时音视频通话功能,按照使用分钟数收费)以及扩展IM功能分别进行收费。企业在选购时,需要根据自己的产品类型、实际需要的IM即时通讯功能以及实际的产品日活数来进行综合选择。
    网易云信与其他三家服务商相比,目前网易云信提供的IM聊天与消息功能最为完善,并且网易云信还唯一支持用户托管功能,可以帮助企业有效维护闲置的用户资料/关系;另外网易云信提供的人与智能机器人聊天功能也比较丰富,也支持人机之间的单聊、群聊等功能,适用于在线教育、企业协同办公以及智能客服等产品目前网易云信与其他三家服务商相比,支持的接入方式最为全面,并且唯一支持macOS、Cocos-2d和Unity这三个平台系统的接入,在这一点有较大的竞争优势。目前环信、容联云通讯、极光推送、网易云信这四家云通讯平台,在IM即时通讯功能的收费价格方面,均按照基础IM功能(通常按照产品日活数收费)、增值IM功能(最典型的是实时音视频通话功能,按照使用分钟数收费)以及扩展IM功能分别进行收费。企业在选购时,需要根据自己的产品类型、实际需要的IM即时通讯功能以及实际的产品日活数来进行综合选择。
    服务平台IM即时通讯功能服务与性能IM即时通讯功能接入与部署方式IM即时通讯功能收费
    融云与其他两家服务商相比,融云唯一提供非常完整的实时音视频通话功能,并且支持企业基于此功能实现视频会议功能,在这一点融云有着较大的竞争优势。同时融云还支持在后台为企业提供完善的后台数据统计功能,方便企业直接查看用户活跃以及费用消耗方面的数据。与其他两家服务商相比,目前融云唯一支持macOS、Linux等平台系统的接入,对于基于这两大平台开发产品的企业非常友好,企业可以实现快速接入;另外融云也可以单独提供专有云部署服务,通过为企业提供专有的服务集群和海外数据中心,来充分满足企业的特殊需求,企业在部署方式方面选择性很强。目前融云、LeanCloud、亲加通讯云这三家云通讯平台,在IM即时通讯功能的收费价格方面,其收费方式和收费标准各不一样,具体如下:融云主要是按照产品日活数按月收费;LeanCloud主要是按照产品日活数按天收费(其中美国和中国分别收费);而亲加通讯云因为本身仅专注于为企业的视频直播和游戏类产品提供服务,因此按照直播时的使用带宽峰值以及产品日活数分别收费。企业在选购时,需要明确自己产品的类型、需要的IM即时通讯功能以及目前比较稳定的产品日活数来综合对比进行选择。
    LeanCloud目前LeanCloud不支持实时音视频通话功能,仅为企业提供最基础的聊天服务;同时LeanCloud在海外仅支持美国用户使用其服务,不支持全球范围内的其他国家或地区使用,与另外两家服务商相比有一定的不足。目前LeanCloud仅支持最基础最常见的接入与部署方式,与其他两家服务商相比表现较为一般。目前融云、LeanCloud、亲加通讯云这三家云通讯平台,在IM即时通讯功能的收费价格方面,其收费方式和收费标准各不一样,具体如下:融云主要是按照产品日活数按月收费;LeanCloud主要是按照产品日活数按天收费(其中美国和中国分别收费);而亲加通讯云因为本身仅专注于为企业的视频直播和游戏类产品提供服务,因此按照直播时的使用带宽峰值以及产品日活数分别收费。企业在选购时,需要明确自己产品的类型、需要的IM即时通讯功能以及目前比较稳定的产品日活数来综合对比进行选择。
    亲加通讯云亲加通讯云与其他两家服务商最大的不同在于——亲加通讯云本身仅专注于为企业的视频直播以及游戏类产品提供IM即时通讯服务,这一点企业在选购时需要特别注意。另外亲加通讯云可以为企业提供最基础的聊天功能以及实时音频通话功能,通常适用于游戏类的产品与其他两家服务商相比,目前亲加通讯云最大的不同在于——在接入方式上唯一支持Unity和Cocos-2d这两大手游引擎的接入,因此非常适用于开发游戏类产品的企业目前融云、LeanCloud、亲加通讯云这三家云通讯平台,在IM即时通讯功能的收费价格方面,其收费方式和收费标准各不一样,具体如下:融云主要是按照产品日活数按月收费;LeanCloud主要是按照产品日活数按天收费(其中美国和中国分别收费);而亲加通讯云因为本身仅专注于为企业的视频直播和游戏类产品提供服务,因此按照直播时的使用带宽峰值以及产品日活数分别收费。企业在选购时,需要明确自己产品的类型、需要的IM即时通讯功能以及目前比较稳定的产品日活数来综合对比进行选择。
    展开全文
  • 开发im即时通讯包含语音视频组群会议等功能YTXAndroidFullDemov5.1.6r.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
  • 即时通讯:IM即时通讯实现原理 IM技术概念 即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输...

    即时通讯:IM即时通讯实现原理
    IM技术概念

    即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数 据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。
    在这里插入图片描述

    IM的出现和互联网有着密不可分的关系,IM完全基于 TCP/IP网络协议族实现,而TCP/IP协议族则是整个互联网得以实现的技术基础。 最早出现即时通讯协议是IRC(Internet Relay Chat),但是可惜的是它仅能单纯的使用文字、符号的方式通过互联网进行交谈和沟通。随着互连网变得高度发达,即时通讯也变得远不止聊天这么简单,

    自 1996年第一个IM产品ICQ发明后,IM的技术和功能也开始基本成型,语音、视频、文件共享、短信发送等高级信息交换功能都可以在IM工具上实现,于 是功能强大的IM软件便足以搭建一个完整的通信交流平台。
    在这里插入图片描述

    QQ就是使用UDP协议进行发送和接收消息的。当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你看谁在线时,你的OICQ又一次作为Client从QQ Server上读取在线网友名单。当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传 送。如果你和对方的连接不是很稳定,QQ服务器将为你们的聊天内容进行中转。

    目前最具代表性的几款的IM通讯软件有MSN、Google Talk、Yahoo、Messenger 、腾讯QQ等,其他的即时通讯软件原理与此大同小异。

    欢迎交流~

    展开全文
  • im即时通讯

    2019-09-24 07:38:24
    im即时通讯 即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割...

     

     

    即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起的虚电路,进行连续的、双向的、严格保证数据正确性的文件传输协议。而后者是以数 据报的形式,对拆分后的数据的先后到达顺序不做要求的文件传输协议。


    QQ就是使用UDP协议进行发送和接收消息的。当你的机器安装了OICQ以后,实际上,你既是服务端(Server),又是客户端(Client)。当你登录OICQ时,你的OICQ作为Client连接到腾讯公司的主服务器上,当你看谁在线时,你的OICQ又一次作为Client从QQ Server上读取在线网友名单。当你和你的OICQ伙伴进行聊天时,如果你和对方的连接比较稳定,你和他的聊天内容都是以UDP的形式,在计算机之间传 送。如果你和对方的连接不是很稳定,QQ服务器将为你们的聊天内容进行中转。其他的即时通信软件原理与此大同小异。

     

    一般的步骤:

     

    首先,用户A输入自己的用户名和密码登录即时通讯服务器,服务器通过读取用户数据库来验证用户身份,如果用户名、密码都正确,就登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号, 然后返回用户A登录成功的标志,此时用户A在 IM系统中的状态为在线(Online Presence)。

     

    其次,根据用户A存储在IM服务器上的好友列表 (Buddy List),服务器将用户A在线的相关信息发送到也同时在线的即时通讯好友的PC机,这些信息包括在线状态、IP地址、 IM客户端使用的TCP端口(Port)号等,即时通讯好友PC机上的即时通讯软件收到此信息后将在PC桌面上弹出一个小窗口予以提示。

     

    第三步,即时通讯服务器把用户A存储在服务器上的好友列 表及相关信息回送到他的PC机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的PC机上的IM客户端收到 后将显示这些好友列表及其在线状态。

     

    接下来,如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不通过 IM服务器中转,而是通过网络进行点对点的直接通讯,这称为对等通讯方式(Peer To Peer) 。在商用即时通讯系统中,如果用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢, IM服务器还提供消息中转服务,即用户A和用户B的即时消息全部先发送到IM服务器,再由服务器转发给对方。早期的IM系统,在IM客户端和IM服务器之间通讯采用采用UDP协议,UDP协议是不可靠的传输协议,而在 IM客户端之间的直接通讯中,采用具备可靠传输能力的TCP协议。随着用户需求和技术环境的发展,目前主流的即时通讯系统倾向于在即时通讯客户端之间、即时通讯客户端和即时通讯服务器之间都采用TCP协议 。

     

    S——C1
    |
    | C1每次想和C2通信,先向S递一个申请,然后S同意,把信息转交C2,  以后每次通信都这样 
    C2

     

    S——C1
    |
    | C1第一次想和C2通信,向S递一个申请,S同意,告诉C1,C2,然后 C1和 C2之间建立了一条连接,可以直接通信,无需经过S. 
    C2

     

    第 一种,对服务器的性能要求比较高,要求服务器可以同时处理很高的连接数,因为所有信息都要通过服务器进行传递,同时,它可以对所传递的信息进行控制。

     

    第二种,仅仅是用户登陆或下线时与服务器进行连接,平时进行通信时,是用户之间直接进行点对点的连接,这种实现更合理一 些。

     

     

    QQ聊天信息是在两个用户间直接通信的,而MSN要经过服务器中转.

    QQ当用户登陆时,用户需要首先与qq服务器进行连接进行登录,服务器会向客户返回一些信息,比如你的好有的在线情况以及ip的信息,然后客户可以与你所请求的朋友进行点对点连接,两者互相通信。


    那 如果 c1和c2都在私网内,要通过路由器做NAT才能出去的话,他们之间的socket是如何建立的呢?
    看一下下面的协议.

    Simple Traversal of User Datagram Protocol (UDP) Through Network
    Address Translators (NATs) (STUN)。

    STUN,是为了实现透明的穿透NAT,而定义的一套协 议。他使本地的内网的机器,具有取得,能够得知他的NAT网关的IP,NAT类型的能力。

    为什么需要STUN:

    因为NAT虽然解决了IP地址稀少的问题,但是也带来了很多的问题。比如所有P2P应用,像文件SHARE,多媒体,和在线游戏等等.
    为了解决这个问题,有人将 Application Layer Gateways (ALGs) 放到了NAT中,
    ALGs 也有严重的问题,比如跟不上速度太块的CLIENT,每一个应用都需要单独的实现。
    跟不上应用的发展。
    为了克服ALGS的问题,又提出了the Middlebox Communications (MIDCOM) protocol
    中间合协议。可是MIDBOX协议使 ,一些CLIENT可以控制NAT/防火墙的行为,通过这个
    把应用协议和NAT部分分开,把ALGS从基本NAT里面处理开。不过因为要处理MIDBOX,那么
    所有的NAT或者防火墙都要升级,

    因为上面种种原因:
    The protocol described here, Simple Traversal of UDP Through NAT
    (STUN), allows entities behind a NAT to first discover the presence
    of a NAT and the type of NAT, and then to learn the addresses
    bindings allocated by the NAT. STUN requires no changes to NATs, and
    works with an arbitrary(任意) number of NATs in tandem between the
    application entity and the public Internet.

    要想穿透NAT,首先知道NAT的一些特性:
    NAT分为4种(加上防火墙的话,多几种情况):
    1.完全透明NAT(Full Cone NAT):
    从相同内部主机(IN IPX) +端口(IN PORTX)发送的数据MAPING为相同的IP(OUT IP X)和端口(OUT PORT X)发送带外网.
    并且 从另一个服务器(Y),如果直连到MAPING的IP(OUT IP X)和端口(OUT PORT X )上,数据将会被转发到内部主机上. (IN IPX), (IN PORTX).
    //也就是说进内部网的数据包的SPORT,SPORT不受限制
    2.受限NAT(Restricted Cone),
    从相同内部主机IN IPX) +端口((IN PORTX))发送的数据MAPING为相同的IP(X)和端口发送带外网.
    和完全NAT不同的是,只有当为X时,外部机器的的请求就被转发到主机IN IPX) +端口((IN PORTX)。
    也就是说进内部网的数据包的,SPORT不受限制,SIP受限制,只能为NAT MAP数据的IP
    3,端口受限NAT(Port Restricted Cone:)
    和受限NAT不同的是,只有当外部主动请求的的源IP和端口,等于内部网发送的请求的目的IP和端口。
    4.对称NAT(Symmetric)
    如果发送的包的目的IP AND PORT,那么MAPPING IP AND PORT,将相同。
    内部网同一台机器,同一个端口 如果目的地址不同,那么MAPPING的端口也不同,
    所以只有他主动连的服务器才可能知道他的MAPPING后端口,别的服务器如果想
    连他只能靠猜测端口。
    总结:
    前面3重NAT,MAPING PORT 和 IP,是根据发送包的的内部网的IP和端口决定的。
    如果数据的内网IP和端口相同,那么MAPPING后的端口和地址是固定。
    这个功能为我们的穿越提供了很好条件。
    第4种NAT,打洞后的MAPPING 地址和端口将变地不可靠。很难穿越。
    注意SERVERA,和SERVERB是两个公网地址,而不是两台机器,

    STUN 的简单操作过程:
    发送请求。请求分为两种
    1. Binding Requests, sent over UDP,
    用来发现是否NAT,用来发现NAT的公网地址,和MAPPING后的端口
    2.Binding Response,
    服务器产生Binding Response,并把得到的MAPPINGIP 和端口,返回到客户端, 客户端比较MAPPING地址是否 和本机地址相同,如果是说明是本机也是公网,否则判断NAT的类型(判断方法:client uses additional STUN Binding Requests)
    3.Binding Error,
    4.Shared Secret Requests, sent over TLS [2] over TCP.
    这个请求要求服务器返回一临时用户名和密码,用来下一步的Binding Requests/ Response,用来验证信息的完整性
    5.Shared Secret Response,
    6 Shared Secret Error Response。
    STUN 信息结构
    STUN 由以后数据结构构成:STUN头+STUN有效载荷
    STUN头结构如下: 存储的值都是以网络顺序存放
    字段类型
    STUN message type Short int 消息类型
    Length Short int 有效载荷长度,不包含头长度
    transaction ID octet[16] 连接的ID值,检查Request,
    和Response

    STUN的有效载荷
    SHUN的有效载荷 是一些STUN的属性构成,属性的类型由信息的类型来决定。
    STUN的属性是定义好了的,属性列表(attribute)如下:
    MAPPED-ADDRESS 必选 用在Binding Response,(添入MAPING IP 和PORT)
    RESPONSEADDRESS 可选 用在Binding Request,指定Response,发送到哪里
    如果没有指定,Response发送到MAPING IP 和 PORT
    CHANGE-REQUEST 可选 用在Binding Request。用来决定,CLIENT的NAT类型是限制NAT,还是端口限制NAT,(命令服务器从不同的源端口/IP,Response请求)
    CHANGED-ADDRESS 可选 用在Binding Responses告诉Client改变的端口和IP
    SOURCE-ADDRESS 必选 只用在Binding Responses,标记信息的源PORT HE IP
    USERNAME 可选 Shared Secret Response/ Binding Requests
    PASSWORD, 必选 SharedSecret Response
    ESSAGEINTEGRITY 可选 用在Binding Responses, Binding Request记录信息的完整性
    ERROR-CODE Binding Error Response and Shared Secret Error Response.
    UNKNOWN-ATTRIBUTES
    REFLECTED-FROM Binding Responses.用于追溯和防止DDOS

    穿透的方法和过程
    注意SERVER1,和SERVER2是两个公网地址,而不是两台机器.

     

    附录: 

    一、IM技术概念

    IM技术全称Instant Messaging,中文翻译“即时通讯”,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,是电子邮件发明以来迅速崛起的在线通讯方 式。

    IM的出现和互联网有着密不可分的关系,IM完全基于 TCP/IP网络协议族实现,而TCP/IP协议族则是整个互联网得以实现的技术基础。 最早出现即时通讯协议是IRC(Internet Relay Chat),但是可惜的是它仅能单纯的使用文字、符号的方式通过互联网进行交谈和沟通。随着互连网变得高度发达,即时通讯也变得远不止聊天这么简单,自 1996年第一个IM产品ICQ发明后,IM的技术和功能也开始基本成型,语音、视频、文件共享、短信发送等高级信息交换功能都可以在IM工具上实现,于 是功能强大的IM软件便足以搭建一个完整的通信交流平台。目前最具代表性的几款的IM通讯软件有MSN、Google Talk、Yahoo、Messenger 、腾讯QQ等。

     

    二、IM技术原理和工作方式

    典型的IM工作方式如下:登陆IM通讯中心(IM通讯服务器),获取一个自建立的历史的交流对象列表(好友列表),然后自身标志为在线状态,当好友列表中的某人在任何时候登录上线并试图通过你的计算机联系你 时,IM系统会发一个消息提醒你,然后你能与他建立一个聊天会话通道进行各种消息如键入文字、通过语音等的交流.


    从技术上来说,IM的基本技术原理如下:

    通过IM服务器登陆或注销
    用户A通过列表找到B,用户B获得消息并与之交谈
    通过IM服务器指引建立与B单独的通讯通道

     

    第一步,用户A输入自己的用户名和密码登录IM服务器, 服务器通过读取用户数据库来验证用户身份,如果验证通过,登记用户A的IP地址、IM客户端软件的版本号及使用的TCP/UDP端口号,然后返回用户A登录成功的标志,此时用户A在IM系统中的状态为在线(Online Presence)。

     

    第二步,根据用户A存储在IM服务器上的好友列表 (Buddy List),服务器将用户A在线的相关信息发送给也同时在线的IM好友的PC机,这些信息包括在线状态、IP地址、IM客户端使用的TCP端口 (Port)号等,IM好友的客户端收到此信息后将在予以提示。

     

    第三步是IM服务器把用户A存储在服务器上的好友列表及 相关信息回送到他的客户端机,这些信息包括也在线状态、IP地址、IM客户端使用的TCP端口(Port)号等信息,用户A的IM客户端收到后将显示这些好友列表及其在线状态。

     

    三、IM通讯方式

    1.在线直接通讯 
    如果用户A想与他的在线好友用户B聊天,他将直接通过服务器发送过来的用户B的IP地址、TCP端口号等信息,直接向用户B的PC机发出聊天信息,用户B 的IM客户端软件收到后显示在屏幕上,然后用户B再直接回复到用户A的PC机,这样双方的即时文字消息就不再IM服务器中转,而是直接通过网络进行点对点 的通讯,即对等通讯方式(Peer To Peer)。

    2.在线代理通讯 
    用户A与用户B的点对点通讯由于防火墙、网络速度等原因难以建立或者速度很慢,IM服务器将会主动提供消息中转服务,即用户A和用户B的即时消息全部先发 送到IM服务器,再由服务器转发给对方。

    3.离线代理通讯 
    用户A与用户B由于各种原因不能同时在线的时候,如此时A向B发送消息,IM服务器可以主动寄存A用户的消息,到B用户下一次登陆的时候,自动将消息转发 给B。

    4.扩展方式通讯 
    用户A可以通过IM服务器将信息以扩展的方式传递给B,如短信发送方式发送到B的手机,传真发送方式传递给B的电话机,以email的方式传递给B的电子邮箱等。


    早期的IM系统,在IM客户端和IM服务器之间通讯采用UDP协议,UDP协议是不可靠的传输协议,而在IM客户端之间的直接通讯中,采用具备可靠传输能 力的TCP协议。随着用户需求和技术环境的发展,目前主流的IM系统倾向于在IM客户端之间、IM客户端和IM服务器之间都采用TCP协议。


    即时通讯相对于其他通讯方式如电话、传真、email等的最大优势就是消息传达的即时性和精确性,只要消息传递双方均在网络上可以互通,使用即时通讯软件传递消息,传递延时仅为1秒种.

     

    四、兴起的嵌入式IM工具。

    传统的IM在统治了互联网即时通讯领域长达十年之久,以其日趋稳定的定能,与较强的用户黏着度,至今仍统治着这个巨大的市场。然而,软件行业的技术精英们,并不满足于此。他们厚积薄发,一直致力于开发出性能更 为优越的即时通讯工具。当然,在功能上的不断完善,自然是一个必然的发展方向,在Web2.0时代,如何大力增强用户对网站的黏着度,而不仅仅是对于IM 的拥附,已经成为他们的主攻方向了。于是,嵌入式IM工具,应运而生了。

    相对以往的传统的即使沟通工具,它们需要用户下载软件包,需要用户进行安装。对于拥有IM产品的网站而言,用户在登陆网站后,不能直接使用其IM工具,对于流量与用户的黏着度,都是有一定影响的。因此在IM 与网站相互依存的今天,没有哪家网络公司,愿意将IM工具孤立开来。

    于是,目前,一种新型的嵌入式IM工具就应运而生了。这种IM工具,不需要下载安装,当用户登陆网页后,该IM直接嵌套在网页中,可以直接使用。

    而在功能上,则一点也不输于传统的IM,无论是传统的文字沟通的速度与效率,还是近年来越来越成为IM工具必备的音频/视频功能,这种嵌入式IM都能提供非常稳定的传输。更值得一提的是,因为嵌入式IM是嵌套 在网页上的,软件供应商,可以根据网站需求,设计出适合网站风格的IM产品。

    posted on 2018-09-29 17:32  shoshana~ 阅读( ...) 评论( ...) 编辑 收藏

    转载于:https://www.cnblogs.com/shoshana-kong/p/9724945.html

    展开全文
  • 仿微信版IM即时通讯聊天系统,包括Android端IOS端PC端,以及强大的后台管理,可快速搭建部署私有聊天系统,具备文字图片,语音,视频,商圈,阅后即焚以及红包功能,可二次定制开发 ...
  • im即时通讯工具源码,即时通讯软件源码视酷,酷信即时通讯 完整版即时聊天通讯软件源码,即时通讯APP,产品成熟,性能稳定,可提供即时通讯软件成品。iOS 、安卓、web端、后台管理,便于客户集成到自己的产品中,...
  • 浅谈IM即时通讯

    2021-04-22 10:14:01
    当你看到这篇文章的时候,说明你还是不太了解IM即时通讯的,或者你有了些许的了解,但是不是太明白是怎么回事儿。这篇文字我就详细讲一下IM通讯机制。 IM其实就是类似与微信、QQ的聊天消息系统。最近几年,互联网...
  • IM即时通讯实现原理

    千次阅读 2019-04-24 13:37:31
    IM即时通讯实现原理 即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,...
  • 原生开发仿微信IM即时通讯系统,私有部署 独立IM即时通讯系统pc,ios,安卓,web,h5源码
  • IM实现即时通信、视频会议,OA功能的系统。系统 分为服务端和客户端。采用TCP/IP、UDP/IP进行数据通信。视频编 码采用Mpeg-4,H.264等编 码器。支持多种分辨率。支持多种码流从5K,2048k等。
  • 极光IM即时通讯初探

    千次阅读 2019-01-15 18:57:33
    最近项目里需要添加IM通讯功能,初期负责人说要使用极光IM,一段折磨期就此开始了。个人之前用过腾讯IM、融云、环信等,这是第一次使用极光IM。说实话极光这个IM确实需要改进的地方很多,不吐不快: 1、集成不方便...
  • Android IM 即时通讯实战项目 从事多年Android软件开发及智能...
  • Actor Messaging platform是一个即时通讯平台,它提供了多种特性,例如:大型群组聊天;无限制历史存储;收发文件、图片、视频; 电话号码/电子邮件或OAuth2一次性密码认证;轻松集成外部服务。 Actor拥有适用于...
  • 哇呼IM即时通讯协议

    2020-06-30 11:47:17
    简介 随着即时通讯(IM : Instant Message)技术的发展,现在即时通讯软件已经占据主流地位,...按照IM即时通讯产品的主要使用人群的不同,IM即时通讯产品大致上可分为个人级即时通讯产品和企业级即时通讯产品。 XMP
  • 服务端基于Tigase大量优化,实现单台服务器并发20万用户以上,集群支持上亿用户 ...是开源IM即时通讯软件的开山鼻祖,提供全套即时通讯源码,可深度自由定制 不依赖第三方,布署时一次性开支再无费用 ...
  • IM 即时通讯实现原理

    千次阅读 2018-01-31 23:25:05
    即时通讯(Instant Messenger,简称IM)软件多是基于TCP/IP和UDP进行通讯的,TCP/IP和UDP都是建立在更低层的IP协议上的两种通讯传输协议。前 者是以数据流的形式,将传输数据经分割、打包后,通过两台机器之间建立起...
  • IM即时通讯框架设计(1)

    千次阅读 2019-08-27 15:59:07
    IM即时通讯框架设计》 小编准备写四章来分享一下 即时通讯技术简介 即时通讯基础版本 即时通讯改进版本 即时通讯高级版本 今天和大家先简单分享一下即时通讯技术有哪些应用场景以及这个技术对于我们来说有哪...
  • 酷信即时通讯源码IM带音视频
  • 简介 随着即时通讯(IM : Instant Message)技术的发展,现在即时通讯软件已经占据主流地位,...按照IM即时通讯产品的主要使用人群的不同,IM即时通讯产品大致上可分为个人级即时通讯产品和企业级即时通讯产品。 XMP
  • 了解IM即时通讯

    2020-06-30 11:55:54
    即时通信(IM,即 Instant Messaging)是指能够即时发送和接收互联网消息等的业务。1998年即时通信的功能日益丰富,逐渐集成了电子邮件、博客、音乐、电视、游戏和搜索等多种功能。 即时通信不再是一个单纯的聊天工具...
  • IM即时通讯实现的原理

    千次阅读 2016-03-28 11:58:23
    IM技术全称Instant Messaging,中文翻译“即时通讯”,它是一种使人们能在网上识别在线用户并与他们实时交换消息的技术,是电子邮件发明以来迅速崛起的在线通讯方式。 IM的出现和互联网有着密不可分的关系...
  • IM即时通讯源码 带音视频聊天交友APP源码 安卓ios原生+搭建视频教程 前端开发语言:VUE( 安卓,IOS,WEB为一套前端代码) 服务器端开发语言: PHP+WebSocket 数据库:MySql + mongodb 前端打包工具:Hbuilder 服务器...
  • iOS - IM 即时通讯

    2016-09-22 09:34:00
    即时通讯IM:Instant Messaging):又称实时通讯,支持用户在线实时交谈,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。 即时通讯在开发中使用的场景有许多,如 AOL、Yahoo IM、MSN、QQ 以及...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,799
精华内容 2,719
关键字:

im即时通讯视频