即时通讯

如何开发一款即时通讯软件?看这六个项目就够了

一世执手 提交于 2019-12-05 02:02:30
即时通讯软件(IM)发展到今天功能已经越来越齐全,我们的日常生活中不管是社交、网上购物还是工作都已经离不开即时通讯软件。今天小编就为大家推荐六个即时通讯的开源项目,分别从不同语言、不同应用方面带给大家一些 IM 软件开发的思路。 推荐项目1、轻量、高性能、单机支持几十万至百万在线用户IM J-IM J-IM 是用 JAVA 语言,基于 t-io 开发的轻量、高性能、单机支持几十万至百万在线用户 IM,主要目标降低即时通讯门槛,快速打造低成本接入在线 IM 系统,通过极简洁的消息格式就可以实现多端不同协议间的消息发送如内置(Http、Websocket、Tcp 自定义 IM 协议)等,并提供通过 http 协议的 api 接口进行消息发送无需关心接收端属于什么协议,一个消息格式搞定一切! 项目特点: 1.高性能(单机可支持几十万至百万人同时在线) 2.轻量、可扩展性极强 3.支持集群多机部署 4.支持 SSL/TLS 加密传输 5.消息格式极其简洁(JSON) 6.支持多种协议(Socket自定义IM协议、Websocket、Http),可分别独立部署。 7.内置消息持久化(离线、历史、漫游),保证消息可靠性,高性能存储 8.各种丰富的 API 接口。 9.零成本部署,一键启动。 项目地址 :https://gitee.com/xchao/j-im 推荐项目2、轻量级企业聊天软件

零基础,史上最通俗视频编码技术入门

╄→尐↘猪︶ㄣ 提交于 2019-12-04 23:20:46
本文引用了微信公众号“鲜枣课堂”的《视频编码零基础入门》文章内容。为了更好的内容呈现,引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作者的劳动。 1、引言 如今我们所处的时代,是移动互联网时代,也可以说是视频时代。从快播到抖音,从“三生三世”到“延禧攻略”,我们的生活,被越来越多的视频元素所影响。 而这一切,离不开视频拍摄技术的不断升级,还有视频制作产业的日益强大。 此外,也离不开通信技术的飞速进步。试想一下,如果还是当年的56K Modem拨号,或者是2G手机,你还能享受到现在动辄1080P甚至4K的视频体验吗? 除了视频拍摄工具和网络通信技术升级之外,我们能享受到视频带来的便利和乐趣,还有一个重要因素,就是视频编码技术的突飞猛进。 视频编码技术涉及的内容太过专业和庞杂,市面上的书籍或博客多数都只是枯燥的技术概念罗列,对于新手来说读完依旧蒙逼是常态,本文将借此机会,专门给大家做一个关于视频编码的零基础科普。 ▼ 本文涉及概念较多,为了方便阅读,本文的内容目录对应如下: 1、引言 2、系列文章 3、图像基础知识 3.1)什么是像素? 3.2)什么是PPI? 3.3)颜色在计算机里是如何表示的? 4、视频编码基础知识 4.1)视频和图像和关系 4.2)未经编码的视频数据量会有多大? 4.3)什么是编码? 5、视频编码的实现原理 5.1)视频编码技术的基本原理 5.2

WebSocket实现Web端即时通信

独自空忆成欢 提交于 2019-12-04 21:25:46
前言 WebSocket 是HTML5开始提供的一种在浏览器和服务器间进行全双工通信的协议。目前很多没有使用WebSocket进行客户端服务端实时通信的web应用,大多使用设置规则时间的轮询,或者使用长轮询较多来处理消息的实时推送。这样势必会较大程度浪费服务器和带宽资源,而我们现在要讲的WebSocket正是来解决该问题而出现,使得B/S架构的应用拥有C/S架构一样的实时通信能力。 HTTP和WebSocket比较 HTTP HTTP协议是半双工协议,也就是说在同一时间点只能处理一个方向的数据传输,同时HTTP消息也是过于庞大,里面包含大量消息头数据,真正在消息处理中很多数据不是必须的,这也是对资源的浪费。 定时轮询 :定时轮询就是客户端定时去向服务器发送HTTP请求,看是否有数据,服务器接受到请求后,返回数据给客户端,本次连接也会随着关闭。该实现方案最简单,但是会存在消息延迟和大量浪费服务器和带宽资源。 长轮询 :长轮询与定时轮询一样,也是通过HTTP请求实现,但这里不是定时发送请求。客户端发送请求给服务端,这时服务端会hold住该请求,当有数据过来或者超时时返回给请求的客户端并开始下一轮的请求。 WebSocket WebSocket在客户端和服务端只需一次请求,就会在客户端和服务端建立一条通信通道,可以实时相互传输数据,并且不会像HTTP那样携带大量请求头等信息

码云 Gitee 云端软件平台学习--GitHub

佐手、 提交于 2019-12-04 15:38:07
码云 Gitee http://git.oschina.net/jackjiang/MobileIMSDK http://www.blogjava.net/jb2011/archive/2018/11/27/433523.html Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询、Comet技术、WebSocket技术、SSE(Server-sent Events)。本文将简要介绍这4种技术的原理,并指出各自的异同点、优缺点等。 2. 概述 1996年IETF HTTP工作组发布了HTTP协议的1.0版本 ,到现在普遍使用的版本1.1,HTTP协议经历了17 年的发展。这种分布式、无状态、基于TCP的请求/响应式、在互联网盛行的今天得到广泛应用的协议,相对于互联网的迅猛发展,它似乎进步地很慢。互联网从兴起到现在,经历了门户网站盛行的web1.0时代,而后随着ajax技术的出现,发展为web应用盛行的web2.0时代,如今又朝着web3.0的方向迈进。反观http协议,从版本1.0发展到1.1,除了默认长连接之外就是缓存处理、带宽优化和安全性等方面的不痛不痒的改进。它一直保留着无状态、请求/响应模式,似乎从来没意识到这应该有所改变。

即时通信系统IM--XMPP

点点圈 提交于 2019-12-04 15:36:53
即时通讯(Instant Messaging)是目前Internet上最为流行的通讯方式,各种各样的即时通讯软件也层出不穷;服务提供商也提供了越来越丰富的通讯服务功能。 不容置疑,Internet已经成为真正的信息高速公路。从实际工程应用角度出发,以计算机网络原理为指导,结合当前网络中的一些常用技术,编程实现基于C/S架构的网络聊天工具是切实可行的。月工资发放总额、月考勤罚款统计、参保金额统计、公积金金额统计。 实时通信(Instant Messaging,简称IM)是一个实时通信系统,允许两人或多人使用网络实时的传递文字消息、文件、语音与视频交流。 即时通讯的安全威胁包括:ID被盗、隐私威胁、病毒威胁等,下面是即时通讯用户应该遵循的一些安全准则,以保护自身的网络安全和隐私。 即时通讯安全准则主要包括:不随意泄露即时通讯的用户名和密码;不在第三方网站登录网页版即时通讯软件;定期更改密码;谨慎使用未经认证的即时通讯插件;在即时通讯设置中开启文件自动传输病毒扫描选项;不接收来历不明或可疑的文件和网址链接。 系统的逻辑视图 C-XX:用户端使用自己定义的协议与NAS、ACS进行通信,提供IM的基本功能。 NAS:为用户C-XX分配ACS服务器,在用户登录时进行。NAS简单的采用轮转的方式,依次分配系统中存在的ACS给登陆的用户。 ACS:为用户提供IM服务端功能,主要有用户信息的修改

centos 安装openfire

非 Y 不嫁゛ 提交于 2019-12-04 09:07:34
##centos 安装openfire## ###第一步### 准备好openfire包: openfire-3.9.1-1.i386.rpm 这个包已经包含了JRE <!--lang:shell--> rpm -ivh openfire-3.9.1-1.i386.rpm 安装完可以用下面的命令启动服务 /opt/openfire/bin/openfire.sh 运行后会出现下面的这个错误: opt/openfire/jre/bin/java: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory 解决方案: 这是由于系统环境引起的,系统是64位的,包里的文件是32位的 <!--lang:shell--> yum install libldb.i686 重启启动openfire,正常了 <!--lang:shell--> /etc/init.d/openfire restart|status|start|stop 注意:这里如果你是远程通过SSH操作,可能遇到一个问题,就是当你离开界面后服务就关闭了。如果你看过Linux的入门书可能就会了解其中的关于shell的概念。可是由于很多人像我一样一知半解,所以出现这种问题。解决的办法是要将openfire.sh提交到后台去运行,命令如下 setsid /opt

C# 调用腾讯即时通信 IM

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-04 08:14:05
IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543 /// <summary> /// IM SDK 初始化。 /// </summary> /// <param name="sdk_app_id"></param> /// <param name="json_sdk_config"></param> /// <returns></returns> [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static int TIMInit(long sdk_app_id, string json_sdk_config); /// <summary> /// 登录 /// </summary> /// <param name="user_id">用户id</param> /// <param name="user_sig">签名</param> /// <param name="cb"></param> /// <returns></returns> [DllImport(@"imsdk.dll", CallingConvention =

手把手完成商业级社交App开发 进阶Android高级工程师

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-04 07:12:25
第1章 课程导学与准备工作 本章主要介绍为何要学习高性能社交App的设计与开发,展示本门课程项目,讲解学习阶梯和实现思路,之后会为大家介绍本课程内容具体安排,最后给出如何学好这门课程的一些学习建议。希望大家都能通过这门课程,学有所成,学有所归。... 第2章 AndroidX与Gradle 本章会带领大家全面了解AndroidX,并且会传授大家Gradle在项目中的一些优化技巧,以及如何使用Gradle提升项目构建速度。 第3章 即时通讯和音视频基础 本章会带领大家认识融云的即时通讯和音视频的开发文档,分析实现思路,提前一步铺垫相关技能的基础知识。 第4章 通用Framework设计 本章会带领大家对通用的功能进行抽取,封装简化之前的冗余代码,做到逻辑与工具分离的开发思想,我们会从创建Framework、封装静态log日志、单例封装时间转换类开始学习,掌握Android沉浸式状态栏和媒体播放功能的开发。 第5章 App启动流程 本章会带领大家完成App的首页启动功能,并且会适配刘海屏和完成自定义验证码的View的开发,同时还会集成Bmob的用户系统,巩固我们的本地化用户库,最后适配运行时权限和启动白屏优化。 第6章 主页框架搭建 本章会带领大家完成主页框架的搭建及优化,完成3D的星球View的实现,适配FileProvider上传头像,实现搜索与匹配好友功能

Java转iOS-第一个项目总结(1)

感情迁移 提交于 2019-12-03 16:03:02
0.前言 本人14年12月份,从网站开发组转到了移动开发组,自己的java两年半工作经验变成了 objective-c 零经验。 2015年1月份新启动了一个移动项目,年后因为人事变动,自己从辅助开发变成了"核心"开发,目前项目基本接近尾声, 下面进行总结,希望对一些人能有帮助, 另外也希望iOS大牛进行指导 1.项目介绍 项目属于一款社区类软件,包含小组/帖子,视频,文章,评论,推荐搜索,即时通讯,好友,第三方登录/分享,推送等,涵盖 常用app的基本功能 2.项目使用的第三方开源库 http://github.ibireme.com/github/list/ios/ 整理了比较常用的iOS第三方组件,以及github上的统计 项目使用了CocoaPods(类似java中的maven)管理常用的第三方库,一些特殊的单独引用,下面介绍下比较好用的几个 1. AFNetworking 目前比较推荐的iOS网络请求组件,默认网络请求是异步,通过block回调的方式对返回数据进行处理。 需要注意的是AFNetworking对服务器返回的ContentType要求比较严格,默认只支持application/json的返回。所以可能需要添加对text/html返回的支持,否则可能无法获得返回数据。 另外就是文件上传, 这里推荐使用第二种 [formData

使用agsXMPP查询聊天室内联系人

丶灬走出姿态 提交于 2019-12-03 01:37:20
项目中有这么一个需求: 1. 间隔一分钟,查询XMPP服务器,获取在某个聊天室中的成员信息 2. 获取查询结果,做相应处理 查询XMPP协议,发现XEP-0045文档有做相关的协议说明: http://xmpp.org/extensions/xep-0045.html#disco-roomitems ,用到的是多用户聊天室(MUC)的discovery操作,对应的Namespace Uri为: http://jabber.org/protocol/disco#items 查询消息定义: <iq from='you jid' id='message id' to='roomJid' type='get'> <query xmlns='http://jabber.org/protocol/disco#items'/> </iq> 正常的查询结果消息格式定义: <iq from='roomJid' id='message id' to='you jid' type='result'> <query xmlns='http://jabber.org/protocol/disco#items'> <item jid='roomJid/member1NickName'/> <item jid='roomJid/member2NickName'/> </query> </iq>