Android的autobahn框架使用实例:实现WebSocket的长连接

26 篇文章 0 订阅
26 篇文章 0 订阅

Android的autobahn框架使用实例:实现WebSocket的长连接

WebSocket三方框架:
01.Java-WebSocket:存在断开之后无法重新连接的问题
02.autobahn:简单方便、
GitHub地址:https://github.com/crossbario/autobahn-java、
官网:https://crossbar.io/autobahn/
03.AndroidAsyn:还在研究、GitHub地址:https://github.com/koush/AndroidAsync


1、下载autobahn的jar包(autobahn-0.5.0.jar):

使用步骤:

1、下载autobahn的jar包(https://download.csdn.net/download/buttonxin/9759974)
2、将jar包放到Android工程的libs目录下面
3、在build.gradle文件中添加:implementation files(‘libs/autobahn-0.5.0.jar’)
4、Rebuild Project重新运行Android项目


2、使用autobahn建立WebSocket连接:

    override fun connectWebSocke(token: String) {
        mConnection = WebSocketConnection()
        //获取uri
        initSocket(uri)
    }
    
    private fun initSocket(uri: String) {
        try {
            //断开连接:mConnection?.disconnect()
            mConnection?.connect(uri, object : WebSocketHandler() {
                //webSocket启动回调
                override fun onOpen() {
                    super.onOpen()
                    Log.i(TAG, "WebSocketHandler------>>>>>>>onOpen")
                }

                //webSocket接收消息的回调
                override fun onTextMessage(payload: String?) {
                    super.onTextMessage(payload)
                    Log.i(TAG, "WebSocketHandler------>>>>>>>payload")
                    if (!payload.isNullOrEmpty()) {
                        SocketCallback.onTextMessage(payload)
                    }
                }

                //webSocket关闭时的回调
                override fun onClose(code: Int, reason: String?) {
                    super.onClose(code, reason)
                    Log.i(TAG, "WebSocketHandler------>>>>>>>onClose")
                    SocketCallback.onClose(code, reason)
                }

            })
        } catch (e : WebSocketException) {
            e.printStackTrace()
        }
    }

3、创建回调接口SocketCallback:

object SocketCallback {

    private const val TAG = "SocketCallback"

    fun onTextMessage(payload: String) {
        Log.e(TAG, "onTextMessage---->>>>>>payload==$payload")
        //发送消息到订阅者
        EventBus.getDefault().postSticky(MessageEvent(payload))
    }

    fun onClose(code: Int, reason: String?) {
        Log.i(TAG, "onClose---->>>>>>code==$code、reason==$reason")
        //发送异常信息
        EventBus.getDefault().postSticky(MessageEvent("onClose: code = $code reason = $reason"))
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值