`

mina中对心跳包的支持

    博客分类:
  • mina
阅读更多

在filter包下有个原生态支持,只需实现接口KeepAliveMessageFactory即可。

但是还是有些不算问题的问题,比如在运行时手动设置空闲时间限制,那么会和KeepAliveFilter相互干扰。

 

例子和源码相对简单,这里贴一个毫无意义的实现,以作参考。

public class KeepAliveTestServer {
	public static void main(String[] args) throws IOException {
		IoAcceptor acceptor = new NioSocketAcceptor();
		
		KeepAliveFilter keepAliveFilter = new KeepAliveFilter(new KeepAliveMessageImpl());
		keepAliveFilter.setForwardEvent(false);
		keepAliveFilter.setRequestInterval(30);
		keepAliveFilter.setRequestTimeout(10);
		keepAliveFilter.setRequestTimeoutHandler(new KeepAliveRequestTimeoutHandler() {

			public void keepAliveRequestTimedOut(KeepAliveFilter filter, IoSession session) throws Exception {
				System.out.println("连接已无响应...关闭session鸟。KeepAliveRequestTimeoutHandler.CLOSE 和我作用一样,默认就是这个");
				session.close(true);
			}
			
		});

		acceptor.getFilterChain().addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory()));
		acceptor.getFilterChain().addLast("KeepAlive", keepAliveFilter);
		acceptor.getFilterChain().addLast("log", new LoggingFilter());
		acceptor.setHandler(new IoHandlerAdapter());
		
		
		acceptor.bind(new InetSocketAddress(13665));
	}
	
	
	static class KeepAliveMessageImpl implements KeepAliveMessageFactory {
		private static final String KAMSG_REQ = "###$$$";
		private static final String KAMSG_REP = "$$$###";
		
		public Object getRequest(IoSession session) {
			return KAMSG_REQ;
		}

		public Object getResponse(IoSession session, Object request) {
			return KAMSG_REP;
		}

		public boolean isRequest(IoSession session, Object message) {
			return KAMSG_REQ.equals(message);
		}

		public boolean isResponse(IoSession session, Object message) {
			return KAMSG_REP.equals(message);
		}
	}
}

 

分享到:
评论
3 楼 karidyang 2010-10-09  
请问啊,客户端如果掉线了,这个方法能检测出来么?
2 楼 mislay 2010-07-31  
不用的....
1 楼 lansine 2010-04-13  

这个需要客户端也是mina的吧?
希望获得指点。
xdllx at 126 dot com

相关推荐

    mina心跳包机制

    mina心跳包机制是Apache Mina框架中的一个关键特性,它用于维持网络连接的活跃状态,确保数据能够在客户端和服务端之间顺畅地传输。Mina是一个高度可扩展的Java网络应用框架,广泛应用于各种分布式系统和网络服务,...

    Mina开源框架 心跳机制详解

    3. **接收和处理心跳包**:当接收到心跳包时,接收方会确认收到,并根据设定的超时时间计算下一次心跳检测的时间。 4. **超时检测**:如果在预设的超时时间内没有接收到对方的心跳包,那么判断连接可能已经断开,...

    JAVA 通信框架MINA(包含心跳)

    Apache MINA 是一个开发高性能和高可伸缩性网络应用程序的网络应用框架。它提供了一个抽象的事件驱动的异步 API,可以使用 TCP/IP、UDP/IP、串口和虚拟机内部的管道等传输方式。Apache MINA 可以作为开发网络应用...

    mina连接 mina心跳连接 mina断线重连

    Mina允许开发者自定义心跳包,通过发送无数据的包或者包含特定标识的数据包,来检查网络连接是否正常。心跳通常由客户端或服务端定期发起,如果在预定时间内未收到回应,则判断为连接异常,并可能触发断线重连流程。...

    MINA 心跳协议Demo

    MINA框架提供了心跳机制的内置支持,使得开发者可以轻松地在应用中集成这一功能。 在描述中,“使用MINA自带的心跳协议编写的心跳的Demo”表明这是一个演示如何在MINA中实现心跳检查的实际代码示例。通常,心跳协议...

    使用mima框架实现安卓心跳包

    在Android开发中,心跳包(Heartbeat Packet)是一种常见的网络通信机制,用于检测客户端与服务器之间的连接状态。当网络连接长时间无数据交换时,通过发送心跳包可以确保连接的活跃性,防止因网络延迟或断开导致的...

    MINA中文官方教程

    Filter是MINA中的一个重要组件,用于处理数据的编码和解码,以及对进来的网络事件进行拦截和处理。ProtocolDecoder负责将接收到的原始字节流解码为应用程序可以理解的数据对象,而ProtocolEncoder则负责将应用程序...

    mina框架源码及jar包

    在本压缩包"apache-mina-2.0.4"中,包含的是Mina框架的源码和jar包,这为开发者深入理解Mina的工作机制以及自定义功能提供了便利。 **Mina框架的核心概念:** 1. **I/O模型**:Mina基于NIO(Non-blocking I/O)...

    Mina+Socket通信

    在实际项目中,可能还需要处理更复杂的场景,例如心跳检测、数据编码解码、异常处理等。Mina提供了丰富的过滤器和事件机制,可以方便地扩展和定制通信行为。而Socket则更底层,需要开发者自行处理这些细节。 文件...

    官方最新Apache MINA 2.0二进制包和源代码

    - **心跳机制**:为了检测网络连接是否活跃,MINA支持心跳机制,确保数据传输的可靠性。 - **线程模型**:MINA允许自定义线程模型,如单线程、多线程或线程池,以适应不同的性能需求。 - **异常处理**:了解如何处理...

    Mina例子包含与spring整合

    在这个"Mina例子包含与Spring整合"的项目中,我们将探讨如何将MINA与流行的Java企业级框架Spring进行集成。 1. **Apache MINA**:MINA是基于Java NIO(非阻塞I/O)的网络应用框架,用于构建高性能、跨平台的服务器...

    队列,mina通信的结合实例

    4. **心跳机制**:MINA可以借助队列定期发送心跳包,检测客户端连接状态,及时发现并处理断连情况。 在`QueueDemo`这个示例中,可能包含了如何创建和使用队列来辅助MINA通信的代码。开发者可能通过编写MINA的Filter...

    mina2.0.19所需的11个jar包

    标题中提到的"Mina 2.0.19所需的11个jar包"是MINA项目的一个特定版本,2.0.19,所必需的依赖库。这些jar包是MINA正常运行的基础,包括核心库和其他相关支持库。9个MINA的jar包很可能包含以下组件: 1. `mina-core`:...

    Mina 框架源码解析-构建简单通信程序

    在`HeartBeatServer.java`中,我们创建了一个服务器端的Mina服务,它监听特定的端口,等待客户端的连接和心跳包的到来。`HeartBeatServerHandler.java`是处理服务器端事件的类,它实现了I/O事件处理器接口,如`...

    mina_tcp服务端需要jar包.zip

    这个压缩包中的jar包可能包含了Apache MINA的核心库和其他必要的依赖,如Netty、log4j等,它们是构建和运行MINA TCP服务端所必需的。在实际项目中,开发者需要将这些jar包添加到项目的类路径中,然后按照MINA的API和...

    Mina入门:mina版之HelloWorld

    **Mina入门:Mina版之HelloWorld** Apache Mina是一个开源...在深入学习Mina时,可以进一步研究它的高级特性,如线程模型、缓冲区管理、心跳机制等,这些都将有助于我们在实际项目中更好地利用Mina提供的强大功能。

    Android-MinaSocket一款基于Mina的Socket长连接库

    - **心跳机制**:为了检测连接是否断开,通常需要设置心跳包,定时发送和接收,防止连接因长时间无数据传输而被网络中间设备关闭。 - **线程安全**:在多线程环境下,需确保所有操作都是线程安全的,避免并发问题。...

    mina 包 socket 框架

    Mina包是一个基于Java的网络通信框架,特别适用于开发高性能且稳定的TCP/IP和UDP/IP服务。...其强大的性能、易于扩展的架构以及对多种协议的支持,使其成为Java开发者在构建网络应用时的首选工具之一。

    MINA长连接框架实现通讯

    同时,心跳机制(Heartbeat)是长连接中常用的一种维持连接活跃的技术,通过定期发送心跳包来检测连接是否正常。 8. **性能优化**:MINA框架允许开发者进行各种性能优化,例如调整缓冲区大小、选择合适的编码/解码...

    Android平台MINA框架使用详细解析

    MINA提供了一套完整的心跳机制,通过发送心跳包来检测网络连接是否中断,从而及时发现并处理断线问题。你可以自定义心跳消息和心跳间隔,以适应不同场景的需求。同时,MINA还提供了异常处理机制,当网络异常发生时,...

Global site tag (gtag.js) - Google Analytics