1, 前端代码 登入页 -> login.html
聊天室登入接口 请输入账号名:
2, 前端代码 聊天页面 -> ChatRoom
聊天室
3, JAVA后台处理代码 WebSocket需要配置才能起作用,
如何配置请参考另一篇 http://www.cnblogs.com/lovling/p/6716612.html
package socket_web;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import javax.websocket.OnClose;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;@ServerEndpoint("/ChatRoomForWebSocket")public class ChatRoomForWebSocket { public static ListuserNames = new ArrayList (); public static List sessions = new ArrayList (); @OnOpen public void open(Session session) { try { String userName = session.getQueryString(); userName = userName.split("=")[1]; userName = URLDecoder.decode(userName, "utf-8"); if (userNames.contains(userName)) { session.getBasicRemote().sendText("error"); } else { userNames.add(userName); sessions.add(session); String msg = "{\"type\":0, \"data\":[" + jsonName() + "]}"; pushMsg(msg); } System.out.println(userName + " 登入了"); } catch (Exception e) { e.printStackTrace(); } } @OnClose public void close(Session session) { try { String userName = session.getQueryString(); userName = userName.split("=")[1]; userName = URLDecoder.decode(userName, "utf-8"); if (sessions.contains(session)){ userNames.remove(userName); sessions.remove(session); } String msg = "{\"type\":0, \"data\":[" + jsonName() + "]}"; pushMsg(msg); } catch (Exception e) { System.out.println("关闭失败"); } } @OnMessage public void message(Session session, String msg) { try { String userName = session.getQueryString(); userName = userName.split("=")[1]; userName = URLDecoder.decode(userName, "utf-8"); Date date = new Date(); SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time = timeFormat.format(date); msg = "{\"type\":1, \"data\":{\"name\":\"" + userName + "\", \"msg\":\"" + msg + "\",\"time\":\"" + time + "\" }}"; pushMsg(msg); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } } // 推送消息给所有用户 public static void pushMsg(String msg) { try { for (Session session : sessions) { session.getBasicRemote().sendText(msg); } } catch (Exception e) { System.out.println("发送失败"); } } // 拼接所有用户名 public static String jsonName() { StringBuilder nameStr = new StringBuilder(100); for (String name : userNames) { nameStr.append("{\"name\":\"" + name + "\"},"); } nameStr.delete(nameStr.length() - 1, nameStr.length()); return nameStr.toString(); }}