• websocket Tomcat JSP Demo


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>WebSocket示例</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="description" content="This is my page">
      </head>
      
      <body>
          <button onclick="subOpen();">open</button><br/>
          <input type="text" name="msg" id="msg"><br/>
          <button onclick="send();">发送</button>
          <div id="div"></div>
      
      </body>
      
      <script type="text/javascript">
          var ws; // 就是一个通信管道
          var target = "ws://localhost:8080/WebsocketTest/echo";//服务端的url,注意以ws开头
          function subOpen(){
              //三个判断用于获取ws通信管道(浏览器兼容)
              if('WebSocket' in window){
                  ws = new WebSocket(target);
              }else if('MozWebSocket' in window){
                  ws = new MozMozWebSocket(target);
              }else{
                  alert("WebSocket is not supported by this browse");
                  return;
              }
              //ws.onopen = function(){}  链接开启会执行方法
              //ws.onclose = function(){}  断开连接会执行方法
              //以上两个实际用处并不多,主要是下面的
              //服务器又信息返回就执行方法
              ws.onmessage=function(event){
                  //服务端一返回内容,就把该内容放到div标签当中
                  document.getElementById("div").innerHTML = event.data;
                  
                  //方便在控制台查看返回内容的具体信息
                  console.info(event);
              };
          };
          
          function send(){
              //点击发送按钮就把输入框里的内容发送给服务器,并把输入框的内容清空
              var msg = document.getElementById("msg").value;
              ws.send(msg);
              document.getElementById("msg").value = "";
          };
          
      </script>
      
    </html>
    
    package Test;
    
    import javax.websocket.OnClose;
    import javax.websocket.OnError;
    import javax.websocket.CloseReason;
    import javax.websocket.EndpointConfig;
    import javax.websocket.OnMessage;
    import javax.websocket.OnOpen;
    import javax.websocket.Session;
    import javax.websocket.server.ServerEndpoint;
    
    //注解规定了访问的URL
    @ServerEndpoint("/echo")
    public class EchoSocket {
        /**
         * 客户端有连接的时候就会调用这个方法
         */
        @OnOpen
        public void open(Session session, EndpointConfig config){
            
            System.out.println(session.getId()+"#############");
        }
        /**
         * 客户端连接断开就会调用此方法
         */
        @OnClose
        public void close(Session session,CloseReason reason){
            System.out.println(session.getId() + "连接关闭了");
        }
        
        /**
         * 接收到客户端的信息
         * @param msg
         * @param last
         */
        @OnMessage
        public void message(Session session,boolean last,String msg){
            System.out.println("客户端说" + msg);
            try {
                session.getBasicRemote().sendText("ni hao too");
                Thread.sleep(3000);//三秒后再发送一条信息,用于验证是否实现数据实时更新
                session.getBasicRemote().sendText("ni hao too twice");
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    
         /**
         *错误监听(当没有关闭socket连接就关闭浏览器会异常)
         */
          @OnError
          public void error(Session session, Throwable error){
               String id = session.getId();
               System.out.println("出错的session的id是" + id);
          }
    public EchoSocket(){
            System.out.println("Socket对象创建");
            //通过对象的创建可以知道不同socket之间的通信不会共享成员变量
        }
    }
    
  • 相关阅读:
    remote access mongodb in docker
    using maven plugins to push spring boot image into remote repository
    docker registry 2 with tls and basic authentication
    docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 3
    docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 2
    docker-compose + spring boot + mysql + redis + nginx 发布web应用: part 1
    The English tense table
    Sdn
    (2016.06.06)第6次作业
    (2016.5.10)第五次作业
  • 原文地址:https://www.cnblogs.com/zhaocundang/p/10058350.html
Copyright © 2020-2023  润新知