<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