<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); }
原文:http://blog.csdn.net/ssrc0604hx/article/details/41694121