gim 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
gim 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
gim 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 Apache
开发语言 Java
操作系统 Android
软件类型 开源软件
开源组织
地区 国产
投 递 者 gogym
适用人群 未知
收录时间 2020-03-25

软件简介

gim 是基于高性能网络框架 getty 封装的,能简单上手、稳定高效的及时通讯框架。

它以降低及时通讯的技术门槛、把更多的时间专注在业务上为目的而诞生。

特点

  • 轻量级架构,核心代码仅几百行。
  • 高效的协议,基于 google protobuf 协议,通讯效率高。
  • 易用的接口,框架提供了常用的可直接使用的接口和回调,简洁高效。
  • 易拓展设计,适配器模式让框架非常容易拓展不同的场景需要。
  • 简洁的数据结构,框架携带的消息结构体非常简单,随时可以拓展所需字段。
  • 强壮的拆包黏包,网络通讯最麻烦的一环,拆包黏包算一个,gim 已经帮你做好了。
  • 服务器集群,集群设计在任何系统上都算是复杂的一环,gim 已经提供了简单健壮的集群设计。
  • 心跳检测,断线重连,离线消息,自动重发,这些肯定不能少。
  • 最好当然是易用性,gim 启动最少只需 2 行代码。
  • 提供客户端使用的 jar,兼容 android。

效果

效果图是安卓上开发一个 demo 的效果,这部分源码不在工程中。

输入图片说明 输入图片说明

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
发表了资讯
2020/08/14 17:52

gim 更新了 1.1.0-beta ,同时支持 socket 与 websocket 消息互通

本次更新 1.1.0-beta 版本 1、优化了代码 2、添加websocket支持 3、添加端口多开支持 4、添加普通socket和websocket的消息互通 gim 一个基于getty,简单易用,稳定高效的及时通讯框架 A Getty based, easy to use, stable and efficient timely communication framework 简介: gim是基于高性能网络框架getty封装的,轻量级,稳定高效的及时通讯框架 Gim is a lightweight, stable and efficient instant communication framewo...

3
29
发表了资讯
2020/03/26 10:04

gim 1.0.0 版本发布,基于 getty 的即时通讯框架

gim 1.0.0 版本发布了。 如果想做一个类似微信的即时通讯工具。亦或者物联网等需要网络通讯的项目。或者对网络通讯感兴趣,也许 gim 可以带来一些帮助。 gim 一个简单易用,稳定高效的及时通讯框架(java) 简介 gim 是基于高性能网络框架 getty 封装的,能简单上手,稳定高效的及时通讯框架。 Getty:[https://github.com/gogym/getty] gim 以降低及时通讯的技术门槛、把更多的时间专注在业务上为目的而诞生。 gim 的特点 轻量...

0
19
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
发表了博客
2019/02/13 23:20

xss 防护总结

防住html 方式插入到页面中的即可,需要根据具体的项目来防护。有一种防护是将所有的外部危险的数据都过滤掉: 1. function xssFilterStr(e) { var t = { scriptReg: /<\s*script(.*?)\s*>|<\s*\/\s*script\s*>/gim, // 去除script 标签 styleReg: /<\s*style(.*?)\s*>|<\s*\/\s*style\s*>/gim, // 去除style标签 eventReg: /\bon[A-Za-z]+\s*\=/gim, // 去除onClick 等事件 pseudoProReg: /(?:javascript|jav\s+ascript|\&#\d...

0
0
2017/10/28 11:22

拼接正则

啊 var v='aa' var re =new RegExp("^\\d+" + v + "$","gim"); re为: /^\d+aa$/gim var re =new RegExp("^\\d+" + v + "$","gim"); // re为/^\d+bl$/gim # 2 var decimalLen =1 var re = new RegExp("^((0(\\.[0-9]{0," + decimalLen +"})?)|([1-9][0-9]*(\\.[0-9]{0,"+ decimalLen + "})?))$","g"); undefined var re2 = /^((0(\.[0-9]{0,1})?)|([1-9][0-9]*(\.[0-9]{0,1})?))$/g undefined re /^((0(\.[0-9]{0,1})?)|([1-9][0...

0
0
发表了博客
2019/09/25 09:22

如何实现浏览器内多个标签页之间的通信?

本题主要考察数据存储的知识,数据存储有本地和服务器存储两种方式。这里主要讲解用本地存储方式解决。即调用 localStorage、Cookie等本地存储方式。 第一种——调用localStorage 在一个标签页里面使用 localStorage.setItem(key,value)添加(修改、删除)内容; 在另一个标签页里面监听 storage 事件。 即可得到 localstorge 存储的值,实现不同标签页之间的通信。 标签页1: <input id="name"> <input type="button" id="btn...

0
0
发表了博客
2019/08/19 11:08

Vue中复制文本 vue-clipboard2

附上代码,方便复制粘贴 //复制文本 onCopy(meetingId) { let _this = this; getMeetingDetail(meetingId).then(res => { let groupUsers = ""; let meeting = res.result; if ( res.result.meetingMembers != null && res.result.meetingMembers.length ) { res.result.meetingMembers.map(item => { if (/<[^>]+>/gim.test(item.remark)) { item.remark = item.remark.replace(/<[^>]+>/gim, ""); } groupUsers += @${item.r...

0
0
发表了博客
2019/08/19 15:20

js中innerHTML与innerText的用法与区别

1、innerHTML:    也就是从对象的起始位置到终止位置的全部内容,包括Html标签。 2、innerText:    从起始位置到终止位置的内容, 但它去除Html标签 举例:<div id="test"> <span style="color:red">test1</span> test2 </div> <a href="javascript:alert(test.innerHTML)">innerHTML内容</a> <a href="javascript:alert(test.innerText)">inerHTML内容</a> 特别说明:   innerHTML是符合W3C标准的属性,而innerText只适用于...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
26 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部