|
|
|
@@ -83,7 +83,7 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
val isAutoShowLeave = SPUtils.getInstance().getBoolean("auto_show_leave", true) |
|
|
|
val isAutoShowChange = SPUtils.getInstance().getBoolean("auto_show_change", true) |
|
|
|
if (isAutoShowLeave || isAutoShowChange) { |
|
|
|
if (!idsLoading) { |
|
|
|
if (!idsLoading && NetworkUtils.isConnected()) { |
|
|
|
idsLoading = true |
|
|
|
LogUtils.d("获取详情开始--ids", TimeUtils.getNowMills()) |
|
|
|
mPresenter?.getLeaveShowIds() |
|
|
|
@@ -108,6 +108,32 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
|
|
|
|
private var client: WebSocketClient? = null |
|
|
|
|
|
|
|
private val mHeartHandler = Handler() |
|
|
|
private val mHeartRunnable = object : Runnable { |
|
|
|
override fun run() { |
|
|
|
mHeartHandler.removeCallbacks(this) |
|
|
|
// 在这里编写定时任务的逻辑 |
|
|
|
Log.d("Timer", "定时任务执行") |
|
|
|
if (NetworkUtils.isConnected()) { |
|
|
|
wsHeart() |
|
|
|
} |
|
|
|
// 定时任务完成后,再次调度定时任务 |
|
|
|
mHeartHandler.postDelayed(this, 10 * 1000) // 10000毫秒后再次执行 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private val mWsHandler = Handler() |
|
|
|
private val mWsRunnable = object : Runnable { |
|
|
|
override fun run() { |
|
|
|
mWsHandler.removeCallbacks(this) |
|
|
|
// 在这里编写定时任务的逻辑 |
|
|
|
Log.d("Timer", "定时任务执行") |
|
|
|
if (NetworkUtils.isConnected()) { |
|
|
|
initWs() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
override fun initView() { |
|
|
|
if (NetworkUtils.isConnected()) { |
|
|
|
if (!User.isLogin() && User.getUser().token.isEmpty()) { |
|
|
|
@@ -201,6 +227,8 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
override fun onDestroy() { |
|
|
|
super.onDestroy() |
|
|
|
mTimeHandler.removeCallbacks(timeRunnable) |
|
|
|
mHeartHandler.removeCallbacks(mHeartRunnable) |
|
|
|
mWsHandler.removeCallbacks(mWsRunnable) |
|
|
|
if (client?.isOpen == true) { |
|
|
|
client?.close() |
|
|
|
} |
|
|
|
@@ -328,54 +356,52 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
} |
|
|
|
|
|
|
|
private fun initWs() { |
|
|
|
Thread { |
|
|
|
client = |
|
|
|
object : WebSocketClient(URI.create(Config.WS_URL), Draft_6455(), null, 10 * 1000) { |
|
|
|
override fun onOpen(handshakedata: ServerHandshake?) { |
|
|
|
LogUtils.d("WebSocketClient-onOpen", handshakedata) |
|
|
|
val user = User.getUser() |
|
|
|
val clientInfo = YzxClientInfo() |
|
|
|
clientInfo.type = 70 |
|
|
|
clientInfo.user_id = user.user_id.toString() |
|
|
|
clientInfo.unit_id = user.school_id.toString() |
|
|
|
clientInfo.token = user.token |
|
|
|
|
|
|
|
client?.send(Gson().toJson(clientInfo)) |
|
|
|
|
|
|
|
} |
|
|
|
if (!NetworkUtils.isConnected()) { |
|
|
|
LogUtils.d("initWs-无网络") |
|
|
|
return |
|
|
|
} |
|
|
|
LogUtils.d("initWs-有网络") |
|
|
|
client = |
|
|
|
object : WebSocketClient(URI.create(Config.WS_URL), Draft_6455(), null, 10 * 1000) { |
|
|
|
override fun onOpen(handshakedata: ServerHandshake?) { |
|
|
|
LogUtils.d("initWs-WebSocketClient-onOpen", handshakedata) |
|
|
|
val user = User.getUser() |
|
|
|
val clientInfo = YzxClientInfo() |
|
|
|
clientInfo.type = 70 |
|
|
|
clientInfo.user_id = user.user_id.toString() |
|
|
|
clientInfo.unit_id = user.school_id.toString() |
|
|
|
clientInfo.token = user.token |
|
|
|
|
|
|
|
client?.send(Gson().toJson(clientInfo)) |
|
|
|
|
|
|
|
override fun onClose(code: Int, reason: String?, remote: Boolean) { |
|
|
|
LogUtils.d("WebSocketClient-onClose", code, reason, remote) |
|
|
|
Thread{ |
|
|
|
Thread.sleep(60*1000) |
|
|
|
initWs() |
|
|
|
}.start() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
override fun onMessage(message: String?) { |
|
|
|
LogUtils.d("WebSocketClient-onMessage", message) |
|
|
|
if (message?.startsWith("ECHO:", true) == false) { |
|
|
|
wsMessage(message) |
|
|
|
} |
|
|
|
} |
|
|
|
override fun onClose(code: Int, reason: String?, remote: Boolean) { |
|
|
|
LogUtils.d("initWs-WebSocketClient-onClose", code, reason, remote) |
|
|
|
mWsHandler.postDelayed(mWsRunnable,60*1000) |
|
|
|
} |
|
|
|
|
|
|
|
override fun onError(ex: Exception?) { |
|
|
|
LogUtils.d("WebSocketClient-onError", ex) |
|
|
|
Thread{ |
|
|
|
Thread.sleep(60*1000) |
|
|
|
initWs() |
|
|
|
}.start() |
|
|
|
override fun onMessage(message: String?) { |
|
|
|
LogUtils.d("initWs-WebSocketClient-onMessage", message) |
|
|
|
if (message?.startsWith("ECHO:", true) == false) { |
|
|
|
wsMessage(message) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
override fun onError(ex: Exception?) { |
|
|
|
LogUtils.d("initWs-WebSocketClient-onError", ex) |
|
|
|
mWsHandler.postDelayed(mWsRunnable,60*1000) |
|
|
|
} |
|
|
|
try { |
|
|
|
client?.connectBlocking() |
|
|
|
wsHeart() |
|
|
|
} catch (e: InterruptedException) { |
|
|
|
e.printStackTrace() |
|
|
|
LogUtils.d("WebSocketClient-catch", e) |
|
|
|
|
|
|
|
} |
|
|
|
}.start() |
|
|
|
try { |
|
|
|
client?.connectBlocking() |
|
|
|
// wsHeart() |
|
|
|
mHeartHandler.postDelayed(mHeartRunnable, 10 * 1000) |
|
|
|
} catch (e: InterruptedException) { |
|
|
|
e.printStackTrace() |
|
|
|
LogUtils.d("initWs-WebSocketClient-catch", e) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private fun wsMessage(msg: String) { |
|
|
|
@@ -384,7 +410,7 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
val res = gson.fromJson<YzxClientInfo>(msg, resultType) |
|
|
|
if (res.data.student_id > 0) { |
|
|
|
if (isAutoShowLeave || isAutoShowChange) { |
|
|
|
LogUtils.d("WebSocketClient--wsMessage",res) |
|
|
|
LogUtils.d("WebSocketClient--wsMessage", res) |
|
|
|
EventBus.getDefault().post(EventLeaveIds("${res.data.student_id}")) |
|
|
|
// mPresenter?.getLeaveShowIds("${res.data.student_id}") |
|
|
|
} |
|
|
|
@@ -394,35 +420,40 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
//请假消息 |
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN) |
|
|
|
fun onMessageEvent(detail: EventLeaveIds) { |
|
|
|
LogUtils.d("WebSocketClient--onMessageEvent",detail) |
|
|
|
LogUtils.d("WebSocketClient--onMessageEvent", detail) |
|
|
|
mPresenter?.getLeaveShowIds("${detail.ids}") |
|
|
|
} |
|
|
|
|
|
|
|
//请假消息 |
|
|
|
@Subscribe(threadMode = ThreadMode.MAIN) |
|
|
|
fun onMessageEvent(detail: UserVersionCheck) { |
|
|
|
LogUtils.d("WebSocketClient--onMessageEvent",detail) |
|
|
|
LogUtils.d("WebSocketClient--onMessageEvent", detail) |
|
|
|
checkVersion(true) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private fun wsHeart() { |
|
|
|
Thread{ |
|
|
|
Thread.sleep(10 * 1000) |
|
|
|
if (NetworkUtils.isConnected()) { |
|
|
|
LogUtils.d("initWs-wsHeart-有网络") |
|
|
|
if (client?.isOpen == true) { |
|
|
|
client?.apply { |
|
|
|
send(Gson().toJson(YzxHeart().getYzxHeader())) |
|
|
|
} |
|
|
|
} else { |
|
|
|
if (client != null) { |
|
|
|
client?.reconnectBlocking() |
|
|
|
} else { |
|
|
|
initWs() |
|
|
|
try { |
|
|
|
if (client != null) { |
|
|
|
client?.reconnectBlocking() |
|
|
|
} else { |
|
|
|
initWs() |
|
|
|
} |
|
|
|
} catch (e: Exception) { |
|
|
|
LogUtils.d("initWs-wsHeart-有网络,异常", e) |
|
|
|
} |
|
|
|
} |
|
|
|
wsHeart() |
|
|
|
}.start() |
|
|
|
// wsHeart() |
|
|
|
} else { |
|
|
|
LogUtils.d("initWs-wsHeart-无网络") |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private fun showNetworkError() { |
|
|
|
@@ -638,6 +669,8 @@ class MainActivity : BaseActivity<MainPresenter>(), NetworkUtils.OnNetworkStatus |
|
|
|
super.onStop() |
|
|
|
EventBus.getDefault().unregister(this) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
class HomePagerAdapter(act: AppCompatActivity) : FragmentStateAdapter(act) { |
|
|
|
|