- 1 import java.io.IOException;
- 2 import java.util.concurrent.CopyOnWriteArraySet;
- 3 4 import javax.websocket.OnClose;
- 5 import javax.websocket.OnError;
- 6 import javax.websocket.OnMessage;
- 7 import javax.websocket.OnOpen;
- 8 import javax.websocket.Session;
- 9 import javax.websocket.server.ServerEndpoint;
- 10 11 12 import org.springframework.stereotype.Service;
- 13 14
- /**
- 15 * 功能说明:websocket处理类, 使用J2EE7的标准 切忌直接在该连接处理类中加入业务处理代码 作者:ydd(2017-04-12 15:29)
- 16 */
- 17 // relationId和userCode是我的业务标识参数,websocket是连接的路径,可以自行定义
- 18@ServerEndpoint("/websocket") 19@Service 20 public class WebsocketEndPoint {
- 21 22 private static final Log LOG = Log.getLogger(WebsocketEndPoint.class);
- 23 24 private static CopyOnWriteArraySet sessions = new CopyOnWriteArraySet();
- 25 private Session session;
- 26 27 28 public WebsocketEndPoint() {
- 29
- }
- 30 31
- /**
- 32 * @Title: onOpen
- 33 * @Description: (打开连接时触发)
- 34 * @param @param session 设定文件
- 35 * @return void 返回类型
- 36 * @throws
- 37 */
- 38@OnOpen 39 public void onOpen(Session session) {
- 40 this.session = session;
- 41 sessions.add(this);
- 42
- }
- 43 44 45
- /**
- 46 * @Title: onMessage
- 47 * @Description: (收到客户端消息时触发)
- 48 * @param @param message
- 49 * @param @return 设定文件
- 50 * @return String 返回类型
- 51 * @throws
- 52 */
- 53@OnMessage 54 public String onMessage(String message) {
- 55
- return "Got your message (" + message + ").Thanks !";
- 56
- }
- 57 58
- /**
- 59 * @Title: onError
- 60 * @Description: (异常时触发)
- 61 * @param @param throwable
- 62 * @param @param session 设定文件
- 63 * @return void 返回类型
- 64 * @throws
- 65 */
- 66@OnError 67 public void onError(Throwable throwable, Session session) {
- 68 LOG.e("Chat Error: " + throwable.toString());
- 69
- }
- 70 71
- /**
- 72 * @Title: onClose
- 73 * @Description: (关闭连接时触发)
- 74 * @param @param session 设定文件
- 75 * @return void 返回类型
- 76 * @throws
- 77 */
- 78@OnClose 79 public void onClose(Session session) {
- 80 sessions.remove(this);
- 81
- }
- 82 83
- /**
- 84 * 向所有用户发送消息
- 85 *
- 86 * @param msg
- 87 */
- 88 public void sendUser(String msg) {
- 89
- try {
- 90
- if (sessions.size() != 0) {
- 91
- for (WebsocketEndPoint s: sessions) {
- 92
- if (s != null) {
- 93 s.session.getBasicRemote().sendText(msg);
- 94
- }
- 95
- }
- 96
- }
- 97
- } catch(IOException e) {
- 98 e.printStackTrace();
- 99
- }
- 100
- }
- 101 102
- }
来源: http://www.cnblogs.com/yanduanduan/p/6744110.html