学习WebSocket(一)

由于项目需要长连接的方式获取实时的数据,所以就得开始百度研究webSocket怎么玩。

详细介绍看这边。写的真好看:https://www.cnblogs.com/jingmoxukong/p/7755643.html#websocket-%E4%BB%A3%E7%90%86

1、WebSocket 是一种网络通信协议。HTML5

2、为啥需要用到WebSocket

  1、HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。(HTTP 协议无法实现服务器主动向客户端发起消息。)

代码如下。

通过扫描的方式

package com.bjsxt.config;

import javax.websocket.Endpoint;
import javax.websocket.server.ServerApplicationConfig;
import javax.websocket.server.ServerEndpointConfig;
import java.util.Set;

public class WebSocketConfig implements ServerApplicationConfig {

  /*
   * 1.  getAnnotatedEndpointClasses
   * 2.  getEndpointConfigs
   *
   * 上面的两个方法都是用来注册 webSocket的。   只不过注册的方式不同。  1方法是 注解的方式
   * 2方法是 接口的方式
   *
   * 显然 注解的方式更加的 灵活简单。  接口的方式更加的传统,严谨。
   *
   * (non-Javadoc)
   * @see javax.websocket.server.ServerApplicationConfig#getAnnotatedEndpointClasses(java.util.Set)
   */
  @Override
  public Set<Class<?>> getAnnotatedEndpointClasses(Set<Class<?>> arg0) {
    // TODO Auto-generated method stub
    System.out.println("正在扫描所有的webSocket服务!!!");
    return arg0;
  }

  @Override
  public Set<ServerEndpointConfig> getEndpointConfigs(Set<Class<? extends Endpoint>> arg0) {
    // TODO Auto-generated method stub
    return null;
  }
}
@ServerEndpoint通过这个注解。来访问这个地址
package com.bjsxt.endpoint;

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


@ServerEndpoint("/hello")
public class HelloWorld {
    /**
     * @OnOpen 这个注解很重要,如果没有写,方法不会走进去的
     * @param session
     */
    @OnOpen
    public void  open(Session  session ){
        System.out.println("建立了一个 webSocket通道!!!  sid:"+session.getId());
    }
}

页面上

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    <title>My JSP 'index.jsp' starting page</title>
    <script type="text/javascript">
        function  ws_init(){
             var target="ws://localhost:8081/hello";
              if ('WebSocket' in window) {
                  ws = new WebSocket(target);   ===这里去调用HelloWorld 的open方法
              } else if ('MozWebSocket' in window) {
                  ws = new MozWebSocket(target);
              } else {
                  alert('WebSocket is not supported by this browser.');
                  return;
              }
              ws.onopen=function(){
                        console.info("webSocket通道建立成功!!!");  
              };
                
        }
    
    </script>
  </head>
  <body>
  
          <button  onclick="ws_init();"  >建立连接</button>
              
  
  </body>
</html>

 

posted @ 2018-04-13 16:00  夏末、初秋  阅读(231)  评论(0编辑  收藏  举报