Android之Mina頻繁傳送心跳包
最近使用 Mina框架實現長連線時,發現客戶端只發了一次心跳請求,伺服器卻不斷的迴圈收到該請求。先來看看心跳包配置:
執行:connection.getFilterChain().addLast("heartbeat", getHeartBeat());
通過斷點KeepAliveMessageFactoryImpl 類發現:
/** * 傳送心跳包請求 */ public class KeepAliveMessageFactoryImpl implements KeepAliveMessageFactory { private String heartRequest; private String heartResponse; public KeepAliveMessageFactoryImpl(String request, String response) { this.heartRequest = request; this.heartResponse = response; } /** * 檢查是否是請求的心跳包資訊 */ @Override public boolean isRequest(IoSession ioSession, Object o) { if (o.equals(heartRequest)) return true; return false; } /** * 用來判斷接收到的訊息是不是一個心跳回復包。 */ @Override public boolean isResponse(IoSession ioSession, Object o) { if (o.equals(heartResponse)) return true; return false; } /** * 獲取一個回覆的心跳包,並且傳送出去 */ @Override public Object getRequest(IoSession ioSession) { Utils.print("預設傳送心跳包--->" + heartRequest); return heartRequest; } /** * 獲取一個心跳回復包。 */ @Override public Object getResponse(IoSession ioSession, Object o) { Utils.print("預設心跳包響應--->" + heartResponse); return heartResponse; } }
程式只回撥一次 public Object getRequest(IoSession ioSession),然後不斷回撥
public Object getResponse(IoSession ioSession, Object o) 方法,伺服器報錯說收到很多次請求,一臉懵逼!
經過不懈努力除錯,最後發現:
心跳包的請求和響應內容不能相同!把responseStr改為不同的內容就好了。
相關文章
- Android之Mina框架學習Android框架
- axios CancelToken 取消頻繁傳送請求的用法和原始碼解析iOS原始碼
- Erlang中頻繁傳送遠端訊息要注意的問題
- 心跳包
- Android Handler機制之Message的傳送與取出Android
- Android 快速傳送郵件Android
- Laravel SMS 簡訊傳送包Laravel
- 【測試】echo傳送和接收TCP/UDP資料包|shell 傳送TCP/UDP資料包TCPUDP
- JAVA之長連線、短連線和心跳包Java
- RouteOS 頻繁自啟
- [Android]Okhttp心跳策略研究AndroidHTTP
- Android Handler 訊息傳送效能優化Android優化
- Android系統原始碼分析-Broadcast傳送Android原始碼AST
- 限制使用者頻繁提交
- Android 基於Netty的訊息推送方案之字串的接收和傳送(三)AndroidNetty字串
- PHP回顧之傳送郵件PHP
- C++編寫自定義TCP包併傳送C++TCP
- wireshark抓包curl傳送http2請求HTTP
- 域賬戶頻繁鎖定排查
- C/C++ 運用Npcap傳送UDP資料包C++PCAUDP
- Go之傳送釘釘和郵箱Go
- ORACLE中seq$表更新頻繁的分析Oracle
- REDIS主從頻繁切換事件排查Redis事件
- WPF頻繁更新UI卡頓問題UI
- Kafka之消費與心跳Kafka
- 以太坊錢包開發系列4 - 傳送Token(代幣)
- 怎麼把資料夾變成壓縮包傳送
- Django筆記三十八之傳送郵件Django筆記
- QT之靜態函式傳送訊號QT函式
- ASP.NET Core中如何限制響應傳送速率(不是呼叫頻率)ASP.NET
- Android 之 Jar 包偷天換日AndroidJAR
- 傳送陣
- Android 傳送HTTP GET POST 請求以及通過 MultipartEntityBuilder 上傳檔案(二)AndroidHTTPUI
- [React]setState呼叫過於頻繁的問題React
- 禁止頻繁請求的ip訪問nginxNginx
- 傳送的郵件總是被退回之SPF
- jmeter之傳送json資料的post請求JMeterJSON
- SpringBoot開發案例之郵件多例項傳送Spring Boot