java mina 长连接_apache mina 长连接
apache mina 是较为流行的基于NIO的TCP/IP网络框架,她拥有高性能,以及高的实用性。
可以用于网页游戏服务器,手机游戏服务器。也可作为推送服务器使用。
版本:2.0.x
SocketAcceptor acceptor = new NioSocketAcceptor(); //这个构造函数有个参数,是processCount指的是core process数,一般是电脑的 CPU核数 + 1。
LoggingFilter log = new LoggingFilter();
log.setMessageSentLogLevel(LogLevel.DEBUG);
acceptor.getFilterChain().addLast("logger", log);
acceptor.getSessionConfig().setWriteTimeout(10000);
acceptor.getSessionConfig().setWriterIdleTime(100000);
TextLineCodecFactory lineFactory = new TextLineCodecFactory(
Charset.forName("UTF-8"));
lineFactory.setDecoderMaxLineLength(Integer.MAX_VALUE);
lineFactory.setEncoderMaxLineLength(Integer.MAX_VALUE);
acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(lineFactory));
acceptor.getFilterChain().addLast("exceutor", new ExecutorFilter());acceptor.setHandler(new MyDataHandler()); //自定义数据处理 handler
acceptor.getFilterChain().addLast("exceutor", new ExecutorFilter());
默认的如果不设置 exceutor,就使用NioSocketAcceptor() 默认的processCount作为主线程数。
ExecutorFilter 默认为 DEFAULT_MAX_POOL_SIZE = 16;
如果在
MyDataHandler做了阻塞的话,最多16个线程 就无法再接受新的线程。
接收更多的线程:
new ExecutorFilter(Executors.newCachedThreadPool()); //线程数。长连接阻塞必须定义一个thread pool否则无法处理更多的连接数。
public class MyDataHandler extends IoHandlerAdapter {
public void messageReceived(IoSession session, Object message) throws Exception {
String act = message.toString();
long _id = session.getId();
session.setAttribute(_id, System.currentTimeMillis());
process(session, message);
}
private void process(IoSession session, Object msg) {
String cmd = getTcpCmd(msg);
if("1001".equals(cmd)){
while (!hasClosed) { //阻塞当前线程,作为主动推送
if (session.isClosing() || !session.isConnected()) {
break; //异常关闭,客户端主动关闭
}
if (hasData()) {
String data1 = "";
try {
data1 = readLatestData();
} catch (Exception e) {
e.printStackTrace();
}
session.write(data1 + "\n"); //发送数据给客户端,长连接
LOG.info("Send Client OK :" + session);
}
}
}
}
java mina 长连接_apache mina 长连接相关推荐
- java mina框架实例_Apache Mina框架实践
1.为什么要用Apache Mina框架 ApacheMina Server 是一个网络通信应用框架,Mina 可以帮助我们快速开发高性能.高扩展性的网络通信应用,Mina 提供了事件驱动.异步(Mi ...
- mina java 1.6 版本_Apache MINA学习
1.准备工作 mina官方下载地址:http://mina.apache.org/downloads.html,这里使用的版本是apache-mina-2.0.4-bin.zip. slf4j官方下载 ...
- JAVA网络编程Socket常见问题 【长连接专题】
一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...
- tcp长连接java_JAVA TCP长连接
做了一个指纹门锁,需要用TCP长连接进行服务端和门锁间的数据通信. 目前JAVA写socket服务端,门锁连接JAVA服务端. 服务端开了一个线程在监听门锁发来的数据(此处必须实时监听数据) 在监听的 ...
- mysql killed进程不结束_php和mysql连接方式(短 长 池)
一个php work进程只能处理一个请求,当完成一个请求了,才能处理下一次的请求 2.短连接: 执行到php关闭mysql连接的代码时,就断开,否则在处理本次请求结束的时候,释放mysql连接 实验: ...
- 什么是长连接和短连接?(长链接、短链接)什么时候使用长连接、短链接?
文章目录 什么是长连接和短连接? 什么时候使用长连接.短链接? 定义 适用场景 什么是长连接和短连接? 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连 ...
- 事务连接中断_HTTP长连接和短连接
短连接 客户端和服务器每进行一次HTTP事务操作,就建立一次连接,任务结束就中断连接.http1.0协议默认使用短连接 长连接 客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访 ...
- 转---谈谈HTTP协议中的短轮询、长轮询、长连接和短连接
作者:伯乐在线专栏作者 - 左潇龙 http://web.jobbole.com/85541/ 如有好文章投稿,请点击 → 这里了解详情 引言 最近刚到公司不到一个月,正处于熟悉项目和源码的阶段,因此 ...
- MySQL连接方式:长连接或者短连接
MySQL 既支持短连接,也支持长连接.短连接就是操作完毕以后,马上close 掉.长连接可以保持打开,减少服务端创建和释放连接的消耗,后面的程序访问的时候还可以使用这个连接.一般我们会在连接池中使用 ...
最新文章
- [Linux] ubuntu 格式化u盘
- 刚刚,“达摩院2020十大科技趋势”正式发布!
- 测试几款STC下载电路
- 为什么 SAP 电商云 Spartacus UI RouterModule.forChild 传入的 path 为 null
- 快速查询ABAP transport request lock status
- 【知乎摘要】女生婚前应该清楚男友哪些方面了才能嫁给他
- 成长为一名Java架构师需要掌握的技术有哪些呢?
- 计算机文化理论基础考试单机版,计算机文化基础授课计划表
- eclipse导入jsp项目
- 淘淘商城第107讲——添加购物车
- 【Swift】图片裁剪
- 教你如何正确的去校验身份证
- 利用IPHONE自带播放器播放视频
- Apache POI 合并单元格
- 测试小故事52:怎么测?
- 电脑网络连接不上怎么办
- 中国大学 MOOC 课程Python语言程序设计 (第11期)测试答案(1-5周)
- FORESEE G500发布,江波龙国产固态硬盘再发声
- c++国密算法SM2加密解密demo
- 电子工程类职称包含计算机专业吗,电子信息工程专业技术职称
热门文章
- CentOS下查看最后登录的用户信息以及LOG记录
- matlab能修图吗,相机上这个“功能”,不打开会影响修图效果,别等拍完照片才知道...
- mysql int长度能到100嘛_MySQL int 类型不是最多只能到 4,294,967,295 么,怎么会有 int(11)?...
- c# 对象json互相转换_C#匿名对象(转JSON)互转、动态添加属性
- 字符设备驱动代码完整分析
- Selenium3自动化测试——5. 鼠标悬停操作
- 大工18秋《计算机网络技术》在线作业1,大工18秋《专业英语(计算机英语)》在线作业3【标准答案】...
- 服务器有操作系统吗,云服务器有操作系统吗
- Java医疗管理系统技术描述
- 别再说你不会!自学java教程百度云