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"))
}
}