flutter开源im(flutter开源ui组件)

网友投稿 2860 2022-12-23

本篇文章给大家谈谈flutter开源im,以及flutter开源ui组件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享flutter开源im的知识,其中也会对flutter开源ui组件进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

补齐短板-开源IM项目OpenIM关于初始化/登录/好友接口文档介绍

OpenIM文档方面的建设一直远远落后于开发, 也经常被开发者诟病,在接下来一周的时间里,我们重点补齐文档,让开发者更轻松接入。由于app sdk底层都是go来实现,所以本文先写一个模板和框架,在接下来的时间里,会有iOS、Android、Flutter、Uniapp、jssdk同事补充具体的细节,并更新到官网
![0](C:\Users\Administrator\Desktop\OpenIM\官网相关\技术文章\6-25\0.png)
## 初始化及登录
初始化并登录成功回调,是正常使用OpenIM 服务的前提
| SDK              | 描述                                                        |

| :--------------- | :----------------------------------------------------------- |

| [Login]          | 登录,如果登录成功,必须退出登录才能再次执行登录操作        |

| [Logout]        | 退出登录                                                    |

| [GetLoginStatus] | 获取登录状态, 101:登录成功,  102:登陆中,  103:登录失败,  201:退出登录 |

| [GetLoginUser]  | 获取当前登录用户UserID,此时用户登录状态未知                |

| [initSDK]        | 初始化 SDK,整个生命周期执行一次,登录相关监听介绍如下:    |
OpenIM和调用方利用监听回调机制,和调用方信息互通,把登录状态通过异步回调方式即时传递给调用方,确保信息及时传达而不阻塞其主线程。
## 监听说明
| 登录相关监听        | 回调描述                                                    |

| :------------------- | :----------------------------------------------------------- |

| [OnConnecting]      | 连接中,在连接后台时(包括重连)回调                        |

| [OnConnectSuccess]  | 连接成功                                                    |

| [OnConnectFailed]    | 连接失败,如果因网络连接失败会重连,其他情况不重连          |

| [OnKickedOffline]    | 被踢下线,可能由于多端登录策略所致,或后台管理员强制其退出登录 |

| [OnUserTokenExpired] | 检测token过期回调                                            |
## 调用流程
OpenIM调用流程分为如下几步:
(1)初始化:在整个生命周期执行一次
(2)设置监听:包括群组监听,好友监听,用户监听,消息及会话监听,这些监听会在其他章节中描述
(3)登录:登录回调成功后再执行其他操作,否则可能出现资源加载未完成的错误
(4)收发消息等操作;
## 好友管理相关接口
OpenIM提供好友关系托管,比如好友申请,同意,以及好友获取等,OpenIM在客户端本地存储好友关系,并结合消息通知机制,按需调用后台接口,确保本地和服务端数据一致。同时利用监听机制,把数据变化通过异步回调传达调用方。OpenIM在收发消息时,默认不检查好友关系,您可以在配置文件中自行修改。OpenIM好友关系是双向关系,A添加B为好友后,则A在B的好友列表中,B也在A的好友列表中,A删除B,仅仅只是删除A的好友列表,而B的好友列表不受影响。同样,黑名单也类似。
| SDK                            | 描述                                                    |

| :----------------------------- | :------------------------------------------------------- |

| [GetDesignatedFriendsInfo]    | 获取指定好友的信息                                      |

| [GetFriendList]                | 获取所有的好友列表                                      |

| [SearchFriends]                | 通过关键词搜索好友                                      |

| [CheckFriend]                  | 检查是否好友关系                                        |

| [AddFriend]                    | 发起添加好友请求                                        |

| [SetFriendRemark]              | 设置好友备注                                            |

| [DeleteFriend]                | 删除好友(单向删除)                                    |

| [GetRecvFriendApplicationList] | 获取我收到的添加好友申请列表                            |

| [GetSendFriendApplicationList] | 获取我发起的的添加好友申请列表                          |

| [AcceptFriendApplication]      | 同意好友申请                                            |

| [RefuseFriendApplication]      | 拒绝好友申请                                            |

| [SetFriendListener]            | 设置好友、黑名单相关监听,用于UI层实时感知数据变化并刷新 |
## 监听说明
好友-的作用:调用方设置好友监听,好友关系的变化会通过OpenIM消息机制实时同步到需要感知的在线用户,包括用户的其他端,调用方根据回调事件做相关的数据处理。
比如用户B在Android端添加用户A为好友,用户A(所有在线的终端)收到B的好友申请,则A调用GetRecvFriendApplicationList获取收到的好友申请列表,刷新界面。同时,用户B在线其他的终端比如PC端也会收到通知,B调用GetSendFriendApplicationList获取发起的好友申请列表,刷新B发出的好友申请列表。
当然也可以利用回调的参数信息,做增量处理,而不用获取全量的好友申请列表。
以用户B申请添加用户A为例
| 好友及黑名单监听              | 描述                                                |

| :---------------------------- | :--------------------------------------------------- |

| [OnFriendApplicationAdded]    | 好友申请列表增加,主动发起者和被动添加者会收到      |

| [OnFriendApplicationDeleted]  | 好友申请列表删除,主动删除者会收到                  |

| [OnFriendApplicationAccepted] | 好友申请被同意,主动发起者和被动添加者会收到        |

| [OnFriendApplicationRejected] | 好友申请被拒绝,主动发起者和被动添加者会收到        |

| [OnFriendAdded]              | 好友增加,用户好友增加时会收到                      |

| [OnFriendDeleted]            | 好友删除,用户好友减少时会收到                      |

| [OnFriendInfoChanged]        | 好友信息改变,用户好友信息(比如昵称等)改变时会收到 |

| [OnBlackAdded]                | 黑名单增加,用户黑名单增加时会收到                  |

| [OnBlackDeleted]              | 黑名单移除,用户黑名单减少时会收到                  |
## 项目介绍
OpenIM继续领跑开源IM领域,在广大开发者的支持下,目前github star突破9k。在数据泄露、信息外泄、隐私滥用的时代,IM私有化部署需求旺盛。其中,政企协同办公对IM需求猛增,随着信息化技术的迭代升级以及信创产业加速落地和实践,协同办公软件的发展潜力将进一步被释放。“安全可控“逐步成为第一要素。对于社区交友领域,暴露出的隐私安全问题越来越多,私有化部署确保用户数据不泄露。
OpenIM从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,打造具备聊天、社交、办公功能的app。
github地址: https://github.com/OpenIMSDK/Open-IM-Server
开发者中心:https://doc.rentsoft-/#/
## OpenIM团队
创始团队来自资深IM技术团队,我们致力于用开源技术创造服务价值,打造轻量级、高可用的IM架构,开发者只需简单调用 SDK,即可在应用内构建多种即时通讯及实时音视频互动场景。OpenIM优势:开源,安全,可靠,低成本。对于信息安全重视的电子政务,企业协同办公,OpenIM都是非常好的选择。
从公司成立之初就将“开源”作为核心战略来推进,开源充分体现了自由、平等、分享的互联网精神。
OpenIM邀请全球技术极客参与技术优化,让开发者轻松集成,让每一个应用都具备IM功能,同时考虑企业的接入成本、服务器资源以及最重要的数据安全性和私密性。

Flutter开源app---开眼短视频

在玩安卓上有款组件化开源app的项目,一款模仿 Eyepetizer | 开眼视频的 开源app,这款app设计风格特别喜欢的,比较简洁,美观,然后最近又在学flutter的知识,于是就写了一款flutter版本的开源短视频,效果也是听不错的,废话不多说,先上效果图。

先附上项目地址: https://github.com/xiaotianzhen/openEYE

项目api会在后面的参考链接里,或者直接项目内查看。
项目地址: https://github.com/xiaotianzhen/openEYE

更新:6/30 项目新增下拉刷新,上拉加载功能
kotlin版本开眼短视频开发中,敬请期待...

总结:在此感谢参考的伙伴的文章,写的也很好,然后我将这个项目改写成了flutter,当中也学习到了很多flutter相关的知识,后续还有继续巩固,不断学习。

参考链接(包含本项目的api)
https://www.jianshu.com/p/1f6b0cfd4606

鼎力推荐github 6.7k star开源IM项目OpenIM性能及消息可靠性测试

先说结论,对于容量和性能:

服务器资源: 8核16G内存, 6个机械磁盘,每个磁盘100G, 用于mongo分片,10MB带宽。

容量:用户容量10万以上,消息条数10亿条。

性能评估:同时在线用户10万,每秒钟发送消息900条,消息延时1秒(从发送者发出消息到接收到消息)

启动sdk,模拟50个用户在线、离线情况,消息可靠性100%。

发送10万消息,有3条失败,其他消息都能被对方精确收到,并成功落地本地db。对于失败的3条消息,接收方确实没有收到,系统消息是一致的。

OpenIM是由前微信技术专家打造的开源的即时通讯组件。Open-IM包括IM服务端和客户端SDK,是一套整体的解决方案,代码开源,一切可控,

OpenIM可以实现全平台支持,目前支持Android,iOS,Flutter,Uni-app,react-native, JSSDK等。

OpenIM可以应用在企业内部办公,dating交友,在线客服等项目,也可以用于元宇宙。

github地址:https://github.com/OpenIMSDK/Open-IM-Server

开发者中心: https://doc.rentsoft-/#/

在单机的情况下,模拟线上用户发消息流程,在线用户量和消息量达到一定量级后,系统CPU、内存、磁盘占用、以及消息时延情况。以确定用户群体达到一定量级后,对服务器资源的预先评估。本次测试并不极限测试,一是因为生产环境本来都会有用户量和消息量的限制,二是因为OpenIM的消息模型,消息发送首先都会通过websocket入库kafka,理论上发送消息的写入性能是两者的组合,而消息发送的真正瓶颈实际在mongodb的随机读写。

服务器资源: 腾讯云主机(香港)1台:linux Ubuntu 18.04.4系统,4核8G内存,单块机械硬盘。5Mb带宽。

测试条件:去掉消息入库mysql(因mysql仅用于管理后台,不影响线上用户服务)。日志级别调整为4或更低。kafka设置2个分区,msg_transfer 2个。

测试流程:1个客户端(成都,window pc,4核16G内存)启动1万个协程,模拟用户与服务器建立websocket长连接,间隔时间为随机50-100秒之间。两个客户端共模拟2万用户同时在线,发送消息,观察消息流转各个模块的处理能力,共计2500万条消息,观察系统内存、磁盘资源使用情况。

mongodb数据情况

redis数据情况

磁盘状态

资源占用分析

(1)redis内存消耗极小,一个用户一条数据(包括token和seq),和用户量成正比,3万用户占用几十M内存。

(2)mongodb如果去掉cache,内存消耗极小,每个document存放5000条消息,与用户量和消息量成正比,3万用户,2500万消息,索引才950K(更好的方式查看mongo消耗cache之外的内存)

(3)2500万消息,磁盘空间占用10G。

(4)每秒钟150条消息,cpu整体占用50%,即2核。

性能分析

(1)性能瓶颈在mongodb写入操作,1条消息,需要按照发送者和接收者拆分2次,mongodb写入2次,未来可以针对mongodb读写进一步优化。

(2)对于cpu消耗较大的模块,未来做一次整体优化。

(3)性能很平稳,不会随着数据量增加而降低。机械磁盘iops 达到200基本达到了设备的极限

服务器资源: 8核16G内存, 6个磁盘,每个磁盘100G, 用于mongo分片,10MB带宽。

性能评估:同时在线用户10万,每秒钟发送消息900条,消息延时1秒(从发送者发出消息到接收到消息)

(1)mongo集群部署,支持上亿用户同时在线,千亿级消息;

(2)简化集群部署;

(3)数据备份、恢复工具;

以上主要对服务端性能做了一个大致测试,但一套完整的IM解决方案,不仅仅是服务端的工作。实际上,客户端重要性毋庸置疑,具体包括如何利用seq和服务端同步消息,如果保证消息收发的时序,如何回调客户端(会话改变、新增,新消息),消息落地本地db,seq同步,消息推拉如何结合以确保消息收发可靠性。

相比于性能测试,实际上,消息的可达性(可靠性)更为重要。所以,我们在做性能测试的同时,也要对消息的可达性(可靠性)进行测试,如果不能保证消息收发的正确性,再高的性能也是徒劳。本文重点总结关于OpenIM对于消息可达性测试的方案、过程以及结果。先说结论,OpenIM消息可达率100%,大家可以放心使用在生产环境中。seq对齐和同步机制,保证了OpenIM的消息可达性是业界领先的。

IM消息系统的可靠性,通常就是指消息投递的可靠性,即我们经常听到的“消息必达”,通常用消息的不丢失和不重复两个技术指标来表示。确保消息被发送后,能被接收者收到。由于网络环境的复杂性,以及用户在线的不确定性,消息的可靠性(不丢失、不重复)无疑是IM系统的核心指标,也是IM系统实现中的难点之一。总体来说,IM系统的消息“可靠性”,通常就是指聊天消息投递的可靠性(准确的说,这个“消息”是广义的,因为还存用户看不见的各种指令和通知,包括但不限于进群退群通知、好友添加通知等,为了方便描述,统称“消息”)。

从消息发送者和接收者用户行为来讲,消息“可靠性”应该分为以下几种情况:

(1)发送失败,对于这种情况IM系统必须要感知到,明确反馈发送方。如果此消息没有发送成功,发送方可以选择重试或者稍后再试。

(2)发送成功,如果接收方处在“在线”状态,应该立即收到此消息。如果接收方处在“离线”状态不能收到消息,一旦上线则立刻收到消息。

(3)消息不能重复,用数学术语表示:“有且仅有这条消息”,如果重复了,可能表达的意思就变了。 总之,一个商用 IM系统,必须包含消息“可靠性”逻辑,才能谈基本可用,这是IM系统最基本也是最核心的逻辑。

互联网真实场景复杂,但客户端大体可以分为两种情况:(1)发送消息时,接收方在线,能收到消息;(2)发送消息时接收方不在线,登录后能收到离线消息。我们用测试程序模拟互联网客户端各种场景,按照登录、发送消息、接收消息的情况,把测试客户端分为以下2种类型:

(1)启动测试时离线,随机sleep 0-60 秒后登录,发送消息,且接收消息

(2)启动测试时离线,随机sleep 0-60 秒后登录,不发送消息,只接收消息

在实际测试中共计50个客户端,约25个(50%概率)客户端不发送只接收消息,约25个(50%概率)客户端发送且接收消息 。

发送模式:每个客户端随机选择其他客户端作为消息接收者;

测试预期: 每一条发送成功的MsgID,都能在接收的消息列表中找到,同样,每一条接收到的MsgID,都能在发送成功的消息列表中找到。

具体做法:(1)消息发送成功后,通过OnSuccess回调,记录MsgID; 收到新消息后回调OnRecvNewMessage,记录MsgID;(2)周期性对比两个消息列表,确认是否完全一致;

发送数据100000条,其中失败3条,9999997条成功,接收方成功接收9999997条消息(接收方成功接收到消息,写入本地db,并能触发消息回调)

每一条发送成功的消息,对方都能准确接收到,无论接收方在消息发送时的登录状态是在线还是离线。

每一条发送失败的消息,对方都不会收到。

注意事项:

(1)控制压力,因为sdk需要写本地db,客户端会成为压力瓶颈。

(2)压测客户端日志会影响测试性能。

此表格是某IM云平台的价格,如果按照10万月活,存储三年消息来算,大概每年需要支付15万。而采用OpenIM只需要采购云主机,每年成本约0.8万。

做混合的话Uniapp和Flutter我应该学哪个啊?

Uniapp目前比较成熟,而且用的是Vue语法,学习成本比较低,而且行业里面用的也比较广泛,而Flutter的话,学习成本略高,因为要学习新的语言,还有就是目前生态不是特别完备,等他再发展发展吧。黑马程序员官网有成套免费视频哦,有什么不懂的可以直接过去学习。您的采纳是对我成长的鞭策

2018.11月Flutter优质开源项目

项目描述: A Tricky Solution for Implementing Inline-Image-In-Text Feature in Flutter.

项目描述:Widgets for creating Hero-like animations between two widgets within the same screen.

项目描述:How to build a Match-3 game, like Candy Crush, Bejeweled, FishDom… in Flutter.

项目描述:A flutter ui challenge .... building a planets app

项目描述:Clip your widgets with custom shapes provided.

项目描述:A widget that displays a collection of dispersed and non-overlapping children

项目描述:Whatsapp UI clone in flutter. 📱

项目描述:A guillotine menu for Flutter

项目描述:Library for RAD development in Flutter

项目描述:juejin client ui power by flutter

项目描述:Platform-adapting flutter widgets.

项目描述:A simple navigator assistant that allows for passing data to named routes

项目描述:Periodic callbacks in the background for both IOS and Android. Includes Android Headless mechanism

项目描述:My profile in flutter 🙎🏻‍♂️

项目描述:flutter checkbox

项目描述:Code for Cakes Catalog screen created using Flutter

项目描述:Fimber is Flutter logger inspired by Timber (logger API for Android)

项目描述:a pure dart flutter ocr project.inlude picture corper and invoke api from baidu to ocr.

更多精彩内容 http://coderminer.com

Flutter开源项目 - appFlowy 真的是 Notion 的替代品? 一周暴涨 star 9k 多!

https://www.appflowy.io/

https://github.com/AppFlowy-IO/appflowy

Here are the event flow:

The event flow will be discussed in two parts: the frontend implemented in flutter and the FlowySDK implemented in Rust.

Presentation Layer :

Application Layer :

Domain Layer :

Infrastructure Layer :

https://trello.com/b/NCyXCXXh/appflowy-roadmap

https://github.com/singerdmx/flutter-quill

富文本编辑器

https://pub.flutter-io-/packages/freezed

数据 model 生成器,支持注解方式

https://pub.flutter-io-/packages/flutter_colorpicker

颜色选取工具

https://pub.flutter-io-/packages/styled_widget

简化小组件定义

https://pub.flutter-io-/packages/get_it

全局访问你的业务对象,你可以拆分业务和 UI

© 猫哥

关于flutter开源im和flutter开源ui组件的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 flutter开源im的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于flutter开源ui组件、flutter开源im的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:车联网 车载终端(车联网车载终端)
下一篇:确保 一体化政务服务平台(确保 一体化政务服务平台安全)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~