Git Product home page Git Product logo

freddychen / nettychat Goto Github PK

View Code? Open in Web Editor NEW
2.3K 48.0 553.0 3.86 MB

基于Netty+TCP+Protobuf实现的Android IM库,包含Protobuf序列化、TCP拆包与粘包、长连接握手认证、心跳机制、断线重连机制、消息重发机制、读写超时机制、离线消息、线程池等功能。

Home Page: https://juejin.im/post/5c97ae12e51d45580b681b0b

License: Apache License 2.0

Java 100.00%
im netty tcp chat socket protobuf nio aio bio heartbeat

nettychat's Introduction

使用方式

1. 依赖im_lib库,implementation project(':im_lib')
2. 自定义IMSEventListener,实现OnEventListener,重写对应的方法配置参数
3. 自定义IMSConnectStatusListener,实现IMSConnectStatusCallback,重现对应的方法监听ims连接状态
4. 调用IMSClientInterface.init(Vector<String> serverUrlList, OnEventListener listener, IMSConnectStatusCallback callback)方法,把服务器地址列表、IMSEventListener、IMSConnectStatusListener三个参数传入即可。
5. 发送消息:调用IMSClientInterface.sendMsg(MessageProtobuf.Msg msg)即可发送
6. 接收消息:收到消息会回调IMSEventListener.dispatchMsg(MessageProtobuf.Msg msg)方法。

注:由于jcenter账号一直申请不了,所以目前可以先通过下载源码方式进行依赖,后续会发布到jcenter上,以gradle方式进行依赖。

项目博客地址:

掘金 简书 CSDN

使用过程中,如果有任何疑问,请联系我。

如果该项目对你有用,麻烦star一下哈。。。

QQ交流群:1015178804,目前是Android IM技术交流群,后续写的文章,也会用此群进行交流。

目前准备写的文章如下:

1.《开源一个自用的Android IM库,基于Netty+TCP+Protobuf实现》
2.《开源一个自用的Android IM库,基于Netty+WebSocket+Protobuf实现》
3.《开源一个自用的Android IM库,基于Netty+UDP+Protobuf实现》
4.《开源一个自用的Android网络请求库,基于Rxjava+Retrofit实现》
5.《开源一个自用的Android线程池,基于ThreadPoolExecutor实现》
6.《开源一个自用的Android IM UI界面,包含文本、图片、语音、表情、红包等实现》
7.《开源一个自用的Android图片加载库,基于Glide实现》
8.《开源一个自用的Android视频压缩库,基于MediaCodec实现》
9.《开源一个自用的Android视频压缩库,基于ffmpeg实现》
10.《开源一个自用的Android事件分发中心库,基于对象池实现》

以上文章没有先后顺序,想到哪就写到哪吧。

最新新开了一个微信公众号,方便后续KulaChat发布一些系列文章,同时也是为了激励自己写作。主要发布一些原创的Android IM相关的文章(也会包含其它方向),不定时更新。感兴趣的同学可以关注一下,谢谢。PS:感觉鸿洋大神提供的公众号文章排版方式,感激不尽~~

FreddyChen的微信公众号

License

Copyright 2019, chenshichao       

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at 

   http://www.apache.org/licenses/LICENSE-2.0 

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

nettychat's People

Contributors

freddychen avatar jiaoxinnyu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

nettychat's Issues

未收到服务端的握手响应情况

看代码,握手消息没有加入消息重发管理器中,所以如果握手消息发送失败或者没有收到服务器握手响应的情况下,客户端不会重发也不会重连

消息发送问题

TIM截图20190430175740
1.发送失败是否也需要返回给应用层
2.如果发送的时候发现连接失败 也就是心跳机制一直再重连 但是就是发送一瞬间连接断掉 这个时候直接暴力返回是否不好?是否再发送的时候判断连接是否挂掉 然后做重连操作?

消息发送的问题

  1. 消息长度用2个字节标识,所有消息长度不能大于65535,但是发送消息的时候没有判断消息长度
    如果超过长度发消息会报异常,但这条消息还是会重发几次
    image
    2.重试的间隔写错了吧,应该是getResendInterval()吧
    image

切换网络的时候出现重复连接失败--连接成功--连接失败

作者你好,非常感谢你提供的思路和代码,但是我在使用你的demo时,发现如题问题,当我连接成功之后,正常发送消息,此时切换一下wifi(从一个wifi切换到另一个wifi),会出现一只重复连接失败--连接成功--连接失败这样循环,日志如图
image
我debug看了一下,发现问题可能出在TCPChannelInitializerHandler上,它重复的创建,重复添加了几个handler,可能导致之前的handler中channelInactive方法被多次回调,而出发重连,不知有其他小伙伴遇到这种问题没有

启动报错

2020-03-28 18:32:14.538 2601-2628/? E/AndroidRuntime: FATAL EXCEPTION: pool-1-thread-1
Process: com.example.msmk.nettychat, PID: 2601
java.lang.IllegalStateException: app not init...
at com.example.msmk.nettychat.NettyChatApp.sharedInstance(NettyChatApp.java:22)
at com.example.msmk.nettychat.im.IMSEventListener.isNetworkAvailable(IMSEventListener.java:52)
at com.example.msmk.imlib.netty.NettyTcpClient.isNetworkAvailable(NettyTcpClient.java:594)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.