Apache Tomcat 8 WebSocket How-To 中文翻译版
来源:互联网 发布:mp3音乐下载软件 编辑:程序博客网 时间:2024/06/05 03:22
Apache Tomcat 8
WebSocket How-To
内容导航
- 概述
- 应用程序开发
- 生产使用
- Tomcat WebSocket具体的配置
概述
Tomcat提供对在RFC 6455定义的WebSocket的支持。
应用程序开发
Tomcat实现在JSR-356中定义的Java WebSocket 1.0 API。
有几个示例应用程序,演示了如何使用WebSocket API。你需要看看客户端的HTML和服务器端的代码。
生产使用
虽然WebSocket实现可以与任何HTTP连接器一起工作,但是不推荐WebSocket和BIO HTTP连接器配合使用。因为WebSocket的典型使用并不适合HTTP BIO连接器,HTTP BIO 连接器要求为每个连接分配一个线程,而不管是否有空闲的连接。
据报告(56304),Linux会花费大量时间来报告丢掉的连接。当以BIO HTTP连接器使用WebSocket时,这可能会导致该时段内写入出现阻塞。这似乎是不可取的。通过使用内核网络参数/proc/sys/net/ipv4/tcp_retries2,可以减少因连接丢失所花费的报告时间。此外,他们使用了非阻塞IO,可以让Tomcat实现自己的超时机制从而处理这些情况,你也可以使用其他的HTTP连接器。
Tomcat WebSocket具体的配置
Tomcat为WebSocket提供了一些Tomcat特定的配置选项。随着时间的推移,预计这些将被收录到WebSocket规范中。当在阻塞模式下发送WebSocket信息时,使用的写入超时时间默认为20000毫秒(20秒)。你可以通过在用户属性集合中设置org.apache.tomcat.websocket.BLOCKING_SEND_TIMEOUT
来进行变更,用户属性集合被附加到WebSocket 会话中。
分配给该属性的值应该是一个Long类型的数据,并以毫秒为单位来表示使用的超时时间。如果不限制超时时间,请使用-1。
如果应用程序没有为输入的二进制信息定义一个MessageHandler.Partial
,任何输入的二进制信息都应该被缓冲,这样,整个消息可以在一次调用中传递给为二进制信息注册的MessageHandler.Whole
。二进制信息默认的缓存大小为8192字节(8KB)。你也可以通过为servlet context的初始化参数org.apache.tomcat.websocket.binaryBufferSize
设置期望的以字节为单位的值来更改它。
Java WebSocket 规范 1.0不允许在第一个终端已经开始一个WebSocket握手之后进行规划部署。在默认情况下,Tomcat继续允许额外的规划部署。该行为可以通过servlet context的初始化参数org.apache.tomcat.websocket.noAddAfterHandshake来控制。
你可以通过设置系统属性org.apache.tomcat.websocket.STRICT_SPEC_COMPLIANCE
为true
来修改默认值,但是servlet context中的任何显示设置将始终被优先采用。
Java WebSocket 1.0 规范要求在一个不同的线程上执行到发起写入的线程的异步写入回调。由于容器线程池不是通过Servlet API被暴露,因此WebSocket实现必须提供自己的线程池。该线程池可以通过下列servlet context初始化参数被控制:
org.apache.tomcat.websocket.executorCoreSize
: executor线程池的核心大小。如果不设置,则默认为0。org.apache.tomcat.websocket.executorMaxSize
:executor线程池所允许的最大值。如果不设置,则默认为200。org.apache.tomcat.websocket.executorKeepAliveTimeSeconds
:executor线程池中空闲进程所保留的最大时间。如果未指定,则默认为60秒。
当使用WebSocket客户端连接到服务器端时,你可以通过javax.websocket.ClientEndpointConfig
提供的userProperties
来控制建立连接时IO操作的超时时间。该属性为org.apache.tomcat.websocket.IO_TIMEOUT_MS
,它是一个表示超时时间的、单位为毫秒的字符串(String
)。默认值为5000(5秒)。
当使用WebSocket客户端连接到安全服务器终端,你可以使用javax.websocket.ClientEndpointConfig
提供的userProperties
来控制客户端SSL的配置。可以支持下列用户属性:
org.apache.tomcat.websocket.SSL_CONTEXT
org.apache.tomcat.websocket.SSL_PROTOCOLS
org.apache.tomcat.websocket.SSL_TRUSTSTORE
org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD
默认的信任密码为changeit
.
如果设置了org.apache.tomcat.websocket.SSL_CONTEXT
属性,那么org.apache.tomcat.websocket.SSL_TRUSTSTORE
和org.apache.tomcat.websocket.SSL_TRUSTSTORE_PWD
属性将会被忽略。
-----------------------------------------------------------------------------------
转载自:http://www.softown.cn
- Apache Tomcat 8 WebSocket How-To 中文翻译版
- How To Install Apache Tomcat 8 on Ubuntu 16.04
- How to configure JMX on Apache Tomcat
- Apache Tomcat 6.0 SSL Configuration HOW-TO
- Tomcat Apache Tomcat 6.0 Security Manager HOW-TO
- EM11g: How to discover and monitor Tomcat apache server?
- SSL/TLS Configuration HOW-TO Apache Tomcat 7
- NodeMCU文档中文翻译 8 Websocket模块
- How to Install Tomcat
- How to Install Apache Tomcat 8 (on Windows, Mac OS X, Ubuntu) and Get Started with Java Servlet Prog
- How to configure Apache and Tomcat to realize the load balancing?
- How I explained OOD to my wife中文翻译
- How to Uninstall Apache Server
- The Apache Tomcat 5.5 Servlet/JSP Container Class Loader HOW-TO
- The Apache Tomcat 5.5 Servlet/JSP Container Class Loader HOW-TO
- The Apache Jakarta Tomcat 5 Servlet/JSP Container----JNDI Datasource HOW-TO
- How to Configure Tomcat/JBoss and Apache HTTPD for Load Balancing and Failover
- How To Install Apache Tomcat 7 on Ubuntu 14.04 via Apt-Get
- javascript中的null,空串和undefined
- EditText光标默认在第一行,edittext不显示键盘 ,edittext失去焦点
- Android之菜单总结
- cocos2dx3.2 由Hello_World看整体思路
- MFC ActiveX开发基础2:ActiveX控件在Internet上发布
- Apache Tomcat 8 WebSocket How-To 中文翻译版
- struts 拦截器设置防止表单的重复提交
- VC6.0创建hello-World程序
- Binary search
- android 4.4 设置默认短信 和来电短信拒接
- 如何重定向cin和cout?
- leetcode Single Number II
- PHP入门基础系列教程(价值499元)
- 滑动窗口协议