标签:javaee tomcat websocket maven
这篇文章是对最近使用WebSocket的一个经验分享。<span style="white-space:pre">	</span><dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>7.0</version>
        </dependency>
        <dependency>
            <groupId>javax.websocket</groupId>
            <artifactId>javax.websocket-api</artifactId>
            <version>1.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- 增加fastjson-1.1.34.jar -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.1.34</version>
        </dependency>package com.jiepu.visuallab.web.servlet;
import com.alibaba.fastjson.JSON;
import com.jiepu.visuallab.common.C;
import com.jiepu.visuallab.common.bean.SocketReply;
import com.jiepu.visuallab.common.tools.HostTools;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
 *
 * Created by zengxm on 2014/11/4.
 */
@ServerEndpoint("/websocket/test")
public class HostWebSocketServlet {
    private static Map<String, Session> sessions = new HashMap<String, Session>();
    public HostWebSocketServlet(){
        System.out.println("--------------------------------------");
    }
    /**
     * 向客户端群发信息
     * @param category
     * @param data
     */
    public synchronized static void sendAll(String category, Object data){
        SocketReply re = new SocketReply(category, data);
        String replyStr = JSON.toJSONString(re);
        System.out.println("开始群发信息!");
        Set<String> keys = sessions.keySet();
        for(String k:keys){
            Session s = sessions.get(k);
            if(s.isOpen()){
                try{
                    s.getBasicRemote().sendText(replyStr);
                    System.out.println("发送成功, id="+k);
                }catch(Exception e){
                    System.err.println("发送出错:"+e.getMessage());
                }
            }
        }
    }
    @OnMessage
    public void onMessage(Session session, String msg){
        System.out.println("收到信息");
        try {
            session.getBasicRemote().sendText("get");
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @OnOpen
    public void onOpen(Session session, EndpointConfig config){
        try {
            sessions.put(session.getId(), session);
            SocketReply re = new SocketReply(C.HOST_DATA, HostTools.getHostList());
            String replyStr = JSON.toJSONString(re);
            session.getBasicRemote().sendText(replyStr);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    @OnError
    public void onError(Session session, Throwable throwable){
    }
    @OnClose
    public void onClose(Session session, CloseReason reason){
        try {
            System.out.println("断开连接, id="+session.getId());
            synchronized (sessions){
                sessions.remove(session.getId());
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }
} var url = "ws://"+document.location.host+"${base}/websocket/test";
    var ws = new WebSocket(url);
    ws.onopen = function(e){
        console.log("ws connect Success!");
        HostUtil.start();
        HostConsole.init();
        listeners.push(HostConsole);
    }
    ws.onmessage = function(evt){
        console.log("ws get:"+evt.data);
    }
标签:javaee tomcat websocket maven
原文地址:http://blog.csdn.net/ssrc0604hx/article/details/41694121