|
@@ -0,0 +1,93 @@
|
|
|
|
+package com.huimv.wine.ws;
|
|
|
|
+
|
|
|
|
+import com.huimv.wine.entity.Device;
|
|
|
|
+import com.huimv.wine.service.IDeviceService;
|
|
|
|
+import com.huimv.wine.utils.WebsocketUtil;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+import org.springframework.util.ObjectUtils;
|
|
|
|
+
|
|
|
|
+import javax.websocket.*;
|
|
|
|
+import javax.websocket.server.PathParam;
|
|
|
|
+import javax.websocket.server.ServerEndpoint;
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.util.Date;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * websocket接口处理类
|
|
|
|
+ */
|
|
|
|
+@Component
|
|
|
|
+@ServerEndpoint(value = "/seller/{seq}")
|
|
|
|
+public class SellerController {
|
|
|
|
+
|
|
|
|
+ @Autowired
|
|
|
|
+ private IDeviceService iDeviceService;
|
|
|
|
+ /**
|
|
|
|
+ * 连接事件,加入注解
|
|
|
|
+ * @param session
|
|
|
|
+ */
|
|
|
|
+ @OnOpen
|
|
|
|
+ public void onOpen(@PathParam(value = "seq") String seq, Session session) {
|
|
|
|
+ String message = "[" + seq + "]加入聊天室!!";
|
|
|
|
+
|
|
|
|
+ Device device = iDeviceService.getByDeviceId(seq);
|
|
|
|
+ if (ObjectUtils.isEmpty(device)){
|
|
|
|
+ device.setId(seq);
|
|
|
|
+ iDeviceService.save(device);
|
|
|
|
+ }else {
|
|
|
|
+
|
|
|
|
+ device.setLast(new Date());
|
|
|
|
+ iDeviceService.updateById(device);
|
|
|
|
+ }
|
|
|
|
+ // 添加到session的映射关系中
|
|
|
|
+ WebsocketUtil.addSession(seq, session);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 连接事件,加入注解
|
|
|
|
+ * 用户断开链接
|
|
|
|
+ *
|
|
|
|
+ * @param seq
|
|
|
|
+ * @param session
|
|
|
|
+ */
|
|
|
|
+ @OnClose
|
|
|
|
+ public void onClose(@PathParam(value = "seq") String seq, Session session) {
|
|
|
|
+ String message = "[" + seq + "]退出了聊天室...";
|
|
|
|
+ // 删除映射关系
|
|
|
|
+ WebsocketUtil.removeSession(seq);
|
|
|
|
+
|
|
|
|
+// WebsocketUtil.sendMessageForAll(message);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 当接收到用户上传的消息
|
|
|
|
+ *
|
|
|
|
+ * @param seq
|
|
|
|
+ * @param session
|
|
|
|
+ */
|
|
|
|
+ @OnMessage
|
|
|
|
+ public void onMessage(@PathParam(value = "seq") String seq, Session session, String message) {
|
|
|
|
+ String msg = "[" + seq + "]:" + message;
|
|
|
|
+ System.out.println("接收到信息:" + msg);
|
|
|
|
+ // 直接广播
|
|
|
|
+// WebsocketUtil.sendMessageForAll(msg);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 处理用户活连接异常
|
|
|
|
+ *
|
|
|
|
+ * @param session
|
|
|
|
+ * @param throwable
|
|
|
|
+ */
|
|
|
|
+ @OnError
|
|
|
|
+ public void onError(Session session, Throwable throwable) {
|
|
|
|
+ try {
|
|
|
|
+ session.close();
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ throwable.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+}
|