Tomcat8.0 支持的WebSocket 总结

Java WebSocket

依赖环境tomcat8.0及以上

两种配置方式

1.注解式配置

//示例代码

@ServerEndpoint("/chat")

public class Chat{

//建立连接时调用,可传入的参数Session(WebSocket的Session,在SpringWebSocket里面则是WebSocketSession),EndpointConfig,和带@PathParam注的参数

@OnOpen

public void onOpen(Session session,EndpoingConfig config){

}

//消息到来时调用,可传入的参数Session(WebSocket的Session,在SpringWebSocket里面则是WebSocketSession),根据消息的形式,如果是文本消息,传入String类型参数或者Reader,如果是二进制消息,传入byte[]类型参数或者InputStream,如果Pong消息传入实现了PongMessage接口的类型参数,方法还可以带返回类型,如果有返回类型,比如String(还可以是byte[]或ByteBuffer),则是立即向客户端发送String消息,如果是分片消息(消息有whole,partial两种,全部消息和分片消息),还可传入boolean类型的参数,判断是否到了分片的结尾。

@OnMessage//处理文本消息

public void onMessage(Session session,String message,boolean isLast){

}

@OnMessage//处理二进制消息,参数随便搭配

public void onMessage(Session session,byte[] message,boolean isLast){

}

//传输发生错误时调用,可传入参数Session,Throwable

@OnError

public void onError(Session session,Throwable t){

}

@OnClose//连接关闭时调用,可能一方主动关闭,或者连接超时的关闭

public void onClose(CloseReason cr){

}

}

2.编程式配置//继承Endpoint

public class Program extends Endpoint{

@Override

public void onOpen(Session session, EndpointConfig endpointConfig) {

session.addMessageHandler(new MessageHandler.Whole<String>() {

@Override

public void onMessage(String text) {

try {

//可以获取同步的远程端点和同步的,以此发送同步消息或异步消息

mySession.getBasicRemote().sendText("I got this (" +text + ") so I am sending it back !");

} catch (IOException ioe) {

System.out.println("oh dear, something went wrong trying to send the message back: " + ioe.getMessage());

}

}

});

}

//还有onError()和onClose()方法,不写了

}

//配置映射uri,实现ServerApplicationConfig

public class ProgramAppConfig implements ServerApplicationConfi{

//参数是WebSocket会传入扫描到的所有带有@ServerEndpoint注解的类集合,WebSocket会调用这个方法获取这些集合,如果没什么要做的,直接把参数返回就行了

public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> scanned){

return scanned;

}

//WebSocket会传入继承了Endpoint类的集合,但是返回的是ServerEndpointConfig集合,需要做一个转换

public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> endpointClasses){

Set<ServerEndpointConfiguration> configs = new HashSet<ServerEndpointConfiguration>();

ServerEndpointConfiguration sec = ServerEndpointConfigurationBuilder.create(Program .class, "/program").build();

configs.add(sec);

return configs;

}

}

线程安全问题

每次请求Webocket都会实例化一个新的端点,就像HttpSession一样,请求之间互补干扰,不需要我们处理多线程问题

时间: 2024-07-31 12:14:07

Tomcat8.0 支持的WebSocket 总结的相关文章

在Java7与Tomcat8环境下使用WebSocket实现聊天的示例

文中案例在apache-tomcat-8.0.15和jdk1.8.0_25环境下开发,运行.不过标题上是Java7,并不造成影响,代码中没有涉及任何与jdk1.8.x相关的代码.另外之所以要讲清软件版本,一是为了保证案例能够有个明确的实现背景,二是websocket实现tomcat7.x与tomcat8.x有很大差异. 在JavaEE规范集中我们这里主要看Java API for WebSocket(JSR 356).Websocket-api提供了Java实现Websocket的接口,其中最重

Apache 2.4.12 64位+Tomcat-8.0.32-windows-x64负载集群方案

上次搞了Apache 2.2的集群方案,但是现在自己的机器和客户的服务器一般都是64位的,而且tomcat已经到8了.重新做Apache 2.4.12 64位+Tomcat-8.0.32-windows-x64负载集群方案. 知其然知其所以然,先看下一些关键术语: 1.负载均衡(load balance)在互联网高速发展的时代,大数据量.高并发等是互联网网站提及最多的.如何处理高并发带来的系统性能问题,最终大家都会使用负载均衡机制.它是根据某种负载策略把请求分发到集群中的每一台服务器上,让整个服

基于64位CentOS6.4安装Tomcat8.0

4Tomcat安装配置 4.1下载Tomcat Tomcat官网地址:http://tomcat.apache.org/ 最新的Tomcat-8.0.24:http://tomcat.apache.org/download-80.cgi 下载好的tomcat源码在服务器的地址\\192.168.1.101\toolmanagement\工具管理\apache-tomcat-8.0.24.tar.gz 4.2 安装Tomcat 将下载好的源码解压到/usr/local文件夹中 #tar –zxvf

【 Tomcat 】tomcat8.0 调优配置

1.优化内核及TCP连接: fs.file-max = 655350 # 系统文件描述符总量 net.ipv4.ip_local_port_range = 1024 65535 # 打开端口范围 net.ipv4.tcp_max_tw_buckets = 2000 # 设置tcp连接时TIME_WAIT个数 net.ipv4.tcp_tw_recycle = 1 # 开启快速tcp TIME_WAIT快速回收 net.ipv4.tcp_tw_reuse = 1 # 开启TIME_WAIT重用 n

Apache2.4+Tomcat8.0集群安装

下面安装方法为windows平台 一.下载apache2.4以及tomcat8.0安装包 Apache2.4:http://www.apachelounge.com/download/ (windows平台可能需要安装 :Visual C++ Redistributable for Visual Studio 2015 RC) tomcat下载地址:http://tomcat.apache.org/download-80.cgi 二.测试启动(解压出一个Apache和两个tomcat) 分别启动

Tomcat8.0.36安装配置

1.下载tomcat8.0.36 下载地址:http://tomcat.apache.org/download-80.cgi 2.解压 至C:\Program Files\tomcat8下 3.添加系统环境变量,我的电脑->属性->高级系统设置->环境变量(操作同上) (1)变量名: CATALINA_BASE     变量值: C:\Program Files\tomcat8(Tomcat解压到的目录)(2)变量名: CATALINA_HOME     变量值: C:\Program

微软企业库5.0 支持 MySql

三步让 企业库支持 mysql 数据库 1.创建 MySqlDatabaseData 类 using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; using Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ContainerModel; using Microsoft.Practices.EnterpriseLibrary.Data; using Mi

阿里云服务器windows server2008r2+tomcat8.0+nginx1.12

弄了两天的nginx,从了解开始,可能是我理解能力太差了,惭愧惭愧!但是还好看了一些大神的文章总算有点眉目了,此篇用来当作自己的笔记,大家看不懂,勿喷,但是如果有问题,直接回复,我可以给你解答一下,前提是如果我懂的话,嘻嘻. 前提条件:服务器要能够访问80端口,服务器上安装tomcat8.0并能成功运行. 一.安装nginx,下载地址:http://nginx.org/ : 直接解压就可以了,这里解压到E盘根目录:E:\nginx; 命令行(win+r    输入cmd)切换到该目录下:cd E

OpenGL ES 3.0 支持的设备和模拟器

最近自己写的引擎想要做OpenGL ES 3.0,因为现在市场大部分是是 OpenGL ES 2.0,首先要找一个支持OpenGL ES 3.0的设备或者模拟器,所以顺带着对市面上支持的设备做了一些调查. 1.支持OpenGL ES 3.0设备 IOS从IOS7以上版本开始支持ES 3.0 *IOS                             GPU                                       CPU (1) iphone 5s