webSocket实现

来源:互联网 发布:javascript语言精粹pdf 编辑:程序博客网 时间:2024/06/05 22:57
package cn.clgate.atlas.webSocket;import org.apache.log4j.Logger;import org.springframework.stereotype.Service;import org.springframework.web.socket.*;import java.io.IOException;import java.util.ArrayList;@Servicepublic class SocketHandler implements WebSocketHandler{   private static final Logger logger;   private static final ArrayList<WebSocketSession> webSocke;      static{      webSocke = new ArrayList<WebSocketSession>();      logger = Logger.getLogger(SocketHandler.class);   }      @Override   public void afterConnectionEstablished(WebSocketSession session)         throws Exception {      logger.info("成功建立socket连接");      webSocke.add(session);      session.sendMessage(new TextMessage("成功建立socket通信了"));   }   @Override   public void handleMessage(WebSocketSession session, WebSocketMessage<?> message)         throws Exception {      // TODO Auto-generated method stub   }   @Override   public void handleTransportError(WebSocketSession session, Throwable error)         throws Exception {      if(session.isOpen()){         session.close();      }      logger.error("连接出现错误:"+error.toString());      webSocke.remove(session);   }      @Override   public void afterConnectionClosed(WebSocketSession session, CloseStatus arg1)         throws Exception {      logger.debug("连接已关闭");      logger.info("连接已关闭");      webSocke.remove(session);   }   @Override   public boolean supportsPartialMessages() {      return false;   }      /**     * 给所有在线用户发送消息     *     * @param message     */    public void sendMessageToUsers(TextMessage message) {        for (WebSocketSession user : webSocke) {            try {                if (user.isOpen()) {                    user.sendMessage(message);                }            } catch (IOException e) {                e.printStackTrace();            }        }    } }
package cn.clgate.atlas.webSocket;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.EnableWebMvc;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import org.springframework.web.socket.config.annotation.EnableWebSocket;import org.springframework.web.socket.config.annotation.WebSocketConfigurer;import org.springframework.web.socket.config.annotation.WebSocketHandlerRegistry;@Configuration@EnableWebMvc@EnableWebSocketpublic class WebSocketConfig extends WebMvcConfigurerAdapter implements WebSocketConfigurer{      @Autowired   private SocketHandler socketHandler;   @Override   public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {      //注册处理拦截器,拦截url为socketServer的请求      registry.addHandler(socketHandler, "/socketServer");            //注册SockJs的处理拦截器,拦截url为/sockjs/socketServer的请求      registry.addHandler(socketHandler, "/sockjs/socketServer");   }}

测试类:
@org.junit.Testpublic void test(){    SocketHandler socketHandler = new SocketHandler();    socketHandler.sendMessageToUsers(new TextMessage("webSocket向前端发了一条消息"));}   

原创粉丝点击