瀏覽代碼

断线重连

master
xuqm 1 年之前
父節點
當前提交
1d5595494d
共有 8 個檔案被更改,包括 134 行新增14 行删除
  1. +38
    -0
      push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt
  2. +13
    -2
      push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt
  3. +4
    -3
      push/src/main/java/cn/org/bjca/trust/push/message/ImCallback.kt
  4. +0
    -3
      push/src/main/java/cn/org/bjca/trust/push/message/bean/TextMessage.kt
  5. +32
    -0
      push/src/main/java/cn/org/bjca/trust/push/message/bean/UnknownMessage.kt
  6. +2
    -1
      push/src/main/java/cn/org/bjca/trust/push/message/callback/CallbackListener.kt
  7. +14
    -5
      push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt
  8. +31
    -0
      push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt

+ 38
- 0
push/src/main/java/cn/org/bjca/trust/push/common/MessageHelper.kt 查看文件

@@ -0,0 +1,38 @@
package cn.org.bjca.trust.push.common

import cn.org.bjca.trust.push.enums.MsgType
import cn.org.bjca.trust.push.message.bean.TextMessage
import cn.org.bjca.trust.push.message.bean.UnknownMessage
import cn.org.bjca.trust.push.message.msg.Message
import cn.org.bjca.trust.push.message.msg.SendMessage
import org.json.JSONException

object MessageHelper {

@JvmStatic
fun parseMessage(msgType: MsgType, sendMessage: SendMessage): Message? {

val clazz: Class<*> = when (msgType) {
MsgType.Text -> {
TextMessage::class.java
}
else -> {
UnknownMessage::class.java
}
}
var message: Message? = null

try {
message = clazz.newInstance() as Message
message.parse(msgType, sendMessage)
} catch (e: InstantiationException) {
e.printStackTrace()
} catch (e: IllegalAccessException) {
e.printStackTrace()
} catch (e: JSONException) {
e.printStackTrace()
}

return message
}
}

+ 13
- 2
push/src/main/java/cn/org/bjca/trust/push/enums/MsgType.kt 查看文件

@@ -1,6 +1,17 @@
package cn.org.bjca.trust.push.enums

enum class MsgType(val value:Int) {
enum class MsgType(val value: Int) {
UNKNOWN(-1),
Text(1)
Text(1);

companion object {
fun getMsgType(value: Int): MsgType {
for (item in MsgType.values()) {
if (item.value == value) {
return item
}
}
return MsgType.UNKNOWN
}
}
}

+ 4
- 3
push/src/main/java/cn/org/bjca/trust/push/message/ImCallback.kt 查看文件

@@ -3,8 +3,9 @@ package cn.org.bjca.trust.push.message
import cn.org.bjca.trust.push.common.LogHelper
import cn.org.bjca.trust.push.enums.ConnAckReturnCode
import cn.org.bjca.trust.push.enums.OsType
import cn.org.bjca.trust.push.message.msg.SendMessage
import cn.org.bjca.trust.push.message.callback.CallbackListener
import cn.org.bjca.trust.push.message.msg.Message
import cn.org.bjca.trust.push.message.msg.SendMessage

class ImCallback : CallbackListener {
override fun sendComplete(var1: SendMessage) {
@@ -15,8 +16,8 @@ class ImCallback : CallbackListener {
LogHelper.d("消息发送失败")
}

override fun messageArrived(var1: List<SendMessage>) {
TODO("Not yet implemented")
override fun messageArrived(msg: Message) {
LogHelper.d("------新消息------\t${msg}")
}

override fun connected() {


+ 0
- 3
push/src/main/java/cn/org/bjca/trust/push/message/bean/TextMessage.kt 查看文件

@@ -16,9 +16,6 @@ class TextMessage : Message() {

override fun parse(type: MsgType, sendMessage: SendMessage) {
super.parse(type, sendMessage)

// if (!(jsonStr instanceof String))
// return;
try {
val json = sendMessage.message?.let { JSONObject(it) }
if (json != null) {


+ 32
- 0
push/src/main/java/cn/org/bjca/trust/push/message/bean/UnknownMessage.kt 查看文件

@@ -0,0 +1,32 @@
package cn.org.bjca.trust.push.message.bean

import cn.org.bjca.trust.push.common.LogHelper
import cn.org.bjca.trust.push.enums.MsgType
import cn.org.bjca.trust.push.message.msg.Message
import cn.org.bjca.trust.push.message.msg.SendMessage
import org.json.JSONException
import org.json.JSONObject

class UnknownMessage : Message() {
var unkonown: String? = null

init {
this.msgType = MsgType.UNKNOWN
}

override fun parse(type: MsgType, sendMessage: SendMessage) {
super.parse(type, sendMessage)
this.unkonown = sendMessage.message
}

override fun createContentJsonStr(): String {

val json = JSONObject()
try {
json.put("unkonown", this.unkonown)
} catch (e: JSONException) {
LogHelper.e("消息组装失败", e)
}
return json.toString()
}
}

+ 2
- 1
push/src/main/java/cn/org/bjca/trust/push/message/callback/CallbackListener.kt 查看文件

@@ -2,6 +2,7 @@ package cn.org.bjca.trust.push.message.callback

import cn.org.bjca.trust.push.enums.ConnAckReturnCode
import cn.org.bjca.trust.push.enums.OsType
import cn.org.bjca.trust.push.message.msg.Message
import cn.org.bjca.trust.push.message.msg.SendMessage

interface CallbackListener {
@@ -12,7 +13,7 @@ interface CallbackListener {
fun sendError(msg: SendMessage)

// 消息到达
fun messageArrived(msg: List<SendMessage>)
fun messageArrived(msg: Message)

// 连接成功
fun connected()


+ 14
- 5
push/src/main/java/cn/org/bjca/trust/push/message/client/ImClient.kt 查看文件

@@ -2,8 +2,10 @@ package cn.org.bjca.trust.push.message.client

import android.content.Context
import cn.org.bjca.trust.push.common.LogHelper
import cn.org.bjca.trust.push.common.MessageHelper
import cn.org.bjca.trust.push.common.json.GsonImplHelp
import cn.org.bjca.trust.push.enums.ConnAckReturnCode
import cn.org.bjca.trust.push.enums.MsgType
import cn.org.bjca.trust.push.kit.ImClientInterface
import cn.org.bjca.trust.push.message.msg.SendMessage
import org.eclipse.paho.client.mqttv3.*
@@ -89,11 +91,14 @@ class ImClient : ImClientInterface {
}

override fun messageArrived(topic: String?, message: MqttMessage) {
LogHelper.e(
"----------IM收到消息-------------${topic}::${
String(message.payload, Charsets.UTF_8)
}"
)
val sendMessage = GsonImplHelp.get()
.toObject(String(message.payload, Charsets.UTF_8), SendMessage::class.java)
MessageHelper.parseMessage(
MsgType.getMsgType(sendMessage.messageType),
sendMessage
)?.also {
connectOptions.callback?.messageArrived(it)
}
}

override fun deliveryComplete(token: IMqttDeliveryToken?) {
@@ -147,6 +152,10 @@ class ImClient : ImClientInterface {
}

override fun sendMessage(msg: SendMessage) {
if (!isConnect()) {
connectOptions.callback?.sendError(msg)
return
}
try {
mqttSendClient.publish(
"server",


+ 31
- 0
push/src/main/java/cn/org/bjca/trust/push/message/msg/Message.kt 查看文件

@@ -23,5 +23,36 @@ abstract class Message {
this.target = sendMessage.target
this.tenantNo = sendMessage.tenantNo
}

abstract fun createContentJsonStr(): String


override fun toString(): String {
val field = this.javaClass.declaredFields
val sb = StringBuffer()
sb.append("id: $messageId\n")
sb.append("from: $fromClientId\n")
sb.append("to: $toClientId\n")
sb.append("type: $msgType\n")
sb.append("timestamp: $timestamp\n")
// sb.append("parseError" + ": " + this.isParseError() + "|")
var i = 0
while (i < field.size && field.size > 0) {
field[i].isAccessible = true
try {
sb.append(
field[i].name + ": "
+ (field[i][this]?.toString() ?: "--") + "\n"
)
} catch (e: IllegalArgumentException) {
e.printStackTrace()
} catch (e: IllegalAccessException) {
e.printStackTrace()
} catch (e: Exception) {
e.printStackTrace()
}
i++
}
return sb.toString()
}
}

Loading…
取消
儲存