Jetty websocket

使用jetty版本:jetty-websocket-8.0.4.v20111024.jar

使用servletapi版本:3.0

服务器端servlet继承 WebSocketServlet 实现websocket连接。如下代码:

public class Communicate extends WebSocketServlet {private static final long serialVersionUID = 5933410218860858657L;private static List clients = new ArrayList();

@Overridepublic WebSocket doWebSocketConnect(HttpServletRequest arg0, String arg1) {WSocket wsClinet = new WSocket();clients.add(wsClinet);

return wsClinet;}

public static List getClients() {return clients;}

public static void setClients(List clients) {Communicate.clients = clients;}}

使用自定义的文本消息的websocket:

public class WSocket implements OnTextMessage {private Connection connection;

@Overridepublic void onClose(int arg0, String arg1) {System.out.println("*** close:" + arg1);}

@Overridepublic void onOpen(Connection arg0) {System.out.println("*** open:" + arg0.getProtocol());connection = arg0;}

@Overridepublic void onMessage(String arg0) {List clients = Communicate.getClients();if (null == clients) {return;}

for (WSocket ws: clients) {try {Connection ct = ws.getConnection();if(null!= ct && ct.isOpen()) {ct.sendMessage(arg0);}} catch (IOException e) {System.out.println("*** send message exception.");e.printStackTrace();}}}

public Connection getConnection() {return connection;}}

实现逻辑:当接收到消息的时候,给各个客户端轮发。

web.xml配一个servlet:

       communicate  
       com.websocket.service.Communicate  
       
       
       communicate  
       communicate.htm  
     

页面代码:


你可能感兴趣的:(Jetty websocket)