zoukankan      html  css  js  c++  java
  • tomcat支持的websocket服务

    首发:个人博客

    在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。
  • 相关阅读:
    关于“jdk”版本不支持问题的总结
    Linux系统下jdk卸载安装、配置
    weblogic-jdk 问题
    MCU有哪些复位因素
    MCU固件升级(OTA)的几种Flash划分方式
    003_Linux常用命令之文件操作
    002_Linux常用命令之目录操作
    001_Linux常用命令之ls命令
    dup与dup2函数
    Linux 系统查询机器最近重启时间命令
  • 原文地址:https://www.cnblogs.com/zidafone/p/4743603.html
Copyright © 2011-2022 走看看