首发:个人博客

在tomcat7之后的版本,写个websocket服务程序非常容易——
如以下代码所示,当客户端建立了一个连接并发送了一些什么内容到服务器,服务器将每隔两秒返回一个字符串“world”。
之所以演示每两秒返回一次是为了说明这是长连接而不是短连接。

import java.io.IOException;

import javax.websocket.OnMessage;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;

@ServerEndpoint("/test")
public class MyTest {

@OnMessage
    public void onMessage(String message, Session session) 
        throws IOException, InterruptedException {
        System.out.println("客户端说:" + message);
        
        while(true){
            session.getBasicRemote().sendText("world");
            Thread.sleep(2000);
        }
    }
    
}

网页只需要这样写:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello WebSocket</title>
</head>
<body>
    <div id="content"></div>
    <button onclick="sayHello()">打招呼</button>

<script type="text/javascript">
        var webSocket = 
            new WebSocket('ws://localhost:8080/dyna/test');

webSocket.onerror = function(event) {
            onError(event)
        };

webSocket.onopen = function(event) {
            onOpen(event)
        };

webSocket.onmessage = function(event) {
            onMessage(event)
        };

function onMessage(event) {
            document.getElementById('content').innerHTML += '<br />服务器说:' + event.data;
        }

function onOpen(event) {
            document.getElementById('content').innerHTML = '连接成功';
        }

function onError(event) {
            document.getElementById('content').innerHTML = '出现错误';
        }

function sayHello() {
            webSocket.send('hello');
            return false;
        }
    </script>
</body>
</html>

调试的时候发现tomcat7的支持不是特别好,
在eclipse里添加server然后在上面跑项目,不支持websocket;
用在server.xml里添项目的方式,也不支持websocket。

所以换成tomcat8,在eclipse里添加server然后跑项目,websocket也好使。
这样调试就很方便了。

TODO:
1.maven的tomcat7:run个别项目出现奇怪的问题;maven集成tomcat8的实验有时间做做
2.spring4对websocket的支持怎么试都不成功,有时间攻克它。
3.把今天学的即使通讯技术与websocket结合,做网页版qq之类的demo。

长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。

tomcat支持的websocket服务的更多相关文章

  1. 使用tomcat方式实现websocket即时通讯服务端讲解

    使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...

  2. YxdIocp包含有支持大并发的TCP服务组件、HTTP服务组件、UDP服务组件、WebSocket服务组件

    Delphi Windows IOCP 通讯模型封装,基于DIOCP.YxdIocp包含有支持大并发的TCP服务组件.HTTP服务组件.UDP服务组件.WebSocket服务组件,和TCP.UDP等基 ...

  3. Tomcat如何实现WebSocket

    WebSocket协议属于HTML5标准,越来越多浏览器已经原生支持WebSocket,它能让客户端和服务端实现双向通信.在客户端和服务器端建立一条WebSocket连接后,服务器端消息可直接发送到客 ...

  4. tomcat 支持https

    HTTP是平时浏览网页时候使用的一种协议.HTTP协议传输的数据都是未加密的,也就是明文的,因此使用HTTP协议传输隐私信息非常不安全.为了保证 这些隐私数据能加密传输,于是网景公司设计了SSL(Se ...

  5. 使用websocket-sharp来创建c#版本的websocket服务

    当前有一个需求,需要网页端调用扫描仪,javascript不具备调用能力,因此需要在机器上提供一个ws服务给前端网页调用扫描仪.而扫描仪有一个c#版本的API,因此需要寻找一个c#的websocket ...

  6. 小程序server-3-搭建WebSocket 服务

    小程序server-3-搭建WebSocket 服务: 1.安装 Node 模块 使用 ws 模块来在服务器上支持 WebSocket 协议,下面使用 NPM 来安装: cd /var/www/wxp ...

  7. Tomcat 支持的Java 版本和兼容性总结

    https://tomcat.apache.org/whichversion.html 最新最全的Tomcat 支持的Java版本对照,即兼容性一览表:   Servlet Spec JSP Spec ...

  8. 基于jersey和Apache Tomcat构建Restful Web服务(一)

    基于jersey和Apache Tomcat构建Restful Web服务(一) 现如今,RESTful架构已然成为了最流行的一种互联网软件架构,它结构清晰.符合标准.易于理解.扩展方便,所以得到越来 ...

  9. Windows 下tomcat安装及将多个tomcat注册为Windows服务

    一.应用场景 虽然Windows在当下已经不再是我们作为服务器操作系统平台的首选,但是还是有一些开发商或者项目整体需求的限制必须运行在Windows系统平台之下.为了避免多个应用部署在同一个tomca ...

随机推荐

  1. iOS 集成银联支付

    下载地址:https://open.unionpay.com/upload/download/Development_kit85427986.rar 其实我找了半个小时 也不知道怎么就下载好了 这个我 ...

  2. 从AsyncTask中获取数据的问题

    public class GetData extends AsyncTask<String, Void, String> { DataDownloadListener dataDownlo ...

  3. PHP PSR-1 基本代码规范(中文版)

    基本代码规范 本篇规范制定了代码基本元素的相关标准,以确保共享的PHP代码间具有较高程度的技术互通性. 关键词 “必须”("MUST").“一定不可/一定不能”("MUS ...

  4. SEL数据类型

    // //  main.m //  06-SEL数据类型 // //  Created by apple on 14-3-18. //  Copyright (c) 2014年 apple. All ...

  5. Go prepare statment超过mysql最大数

    mysql_stmt_prepare failed! error(1461)Can't create more than max_prepared_stmt_count statements (cur ...

  6. yum只下载安装需要的rpm包

    1.安装yum的插件yum-downloadonly yum -y install yum-downloadonly 2.使用 yum -y install somepackges --downloa ...

  7. NSNotificationCenter

    - (void)viewDidLoad { [super viewDidLoad]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeCust ...

  8. resin 64 & Java install

    [root@vohst voh]# uname -rnvohst 3.10.0-123.el7.x86_64 resin-pro-4.0.41.tar.gz Unrecognized option: ...

  9. 基于axis2框架的两种发布webservice的方法

    这次在中韩的产品定义平台的开发,有幸接触到了通过自己写webservice给其他系统调用的项目. 具体开发背景:这个平台做了几个查询接口都是,都是用servlet方式处理请求,而这边系统之间是通过we ...

  10. 2.Spring Web MVC的优势

    清晰的角色划分:前端控制器(DispatcherServlet).请求到处理器映射(HandlerMapping).处理器适配器(HandlerAdapter).视图解析器(ViewResolver) ...