|
@@ -1,11 +1,14 @@
|
|
package com.huimv.wine.ws;
|
|
package com.huimv.wine.ws;
|
|
|
|
|
|
|
|
+import com.fasterxml.jackson.databind.util.BeanUtil;
|
|
import com.huimv.wine.entity.Device;
|
|
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 com.huimv.wine.entity.vo.WsEvent;
|
|
|
|
+import com.huimv.wine.mapper.DeviceMapper;
|
|
|
|
+import com.huimv.wine.utils.SpringContextUtil;
|
|
|
|
+import com.huimv.wine.utils.WebsocketSellerUtil;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.util.ObjectUtils;
|
|
import org.springframework.util.ObjectUtils;
|
|
|
|
+import org.springframework.web.socket.handler.TextWebSocketHandler;
|
|
|
|
|
|
import javax.websocket.*;
|
|
import javax.websocket.*;
|
|
import javax.websocket.server.PathParam;
|
|
import javax.websocket.server.PathParam;
|
|
@@ -18,61 +21,58 @@ import java.util.Date;
|
|
*/
|
|
*/
|
|
@Component
|
|
@Component
|
|
@ServerEndpoint(value = "/seller/{seq}")
|
|
@ServerEndpoint(value = "/seller/{seq}")
|
|
-public class SellerController {
|
|
|
|
-
|
|
|
|
- @Autowired
|
|
|
|
- private IDeviceService iDeviceService;
|
|
|
|
|
|
+public class SellerController extends TextWebSocketHandler {
|
|
/**
|
|
/**
|
|
* 连接事件,加入注解
|
|
* 连接事件,加入注解
|
|
- * @param session
|
|
|
|
*/
|
|
*/
|
|
@OnOpen
|
|
@OnOpen
|
|
public void onOpen(@PathParam(value = "seq") String seq, Session session) {
|
|
public void onOpen(@PathParam(value = "seq") String seq, Session session) {
|
|
String message = "[" + seq + "]加入聊天室!!";
|
|
String message = "[" + seq + "]加入聊天室!!";
|
|
|
|
+ System.out.println(message);
|
|
|
|
|
|
- Device device = iDeviceService.getByDeviceId(seq);
|
|
|
|
|
|
+ //需要用这种方式注入
|
|
|
|
+ DeviceMapper deviceMapper = SpringContextUtil.getBean(DeviceMapper.class);
|
|
|
|
+ Device device = deviceMapper.getByDeviceId(seq);
|
|
if (ObjectUtils.isEmpty(device)){
|
|
if (ObjectUtils.isEmpty(device)){
|
|
|
|
+ device = new Device();
|
|
device.setId(seq);
|
|
device.setId(seq);
|
|
- iDeviceService.save(device);
|
|
|
|
|
|
+ deviceMapper.insert(device);
|
|
}else {
|
|
}else {
|
|
-
|
|
|
|
device.setLast(new Date());
|
|
device.setLast(new Date());
|
|
- iDeviceService.updateById(device);
|
|
|
|
|
|
+ deviceMapper.updateDeviceById(device);
|
|
}
|
|
}
|
|
- // 添加到session的映射关系中
|
|
|
|
- WebsocketUtil.addSession(seq, session);
|
|
|
|
|
|
|
|
|
|
+ // 添加到session的映射关系中
|
|
|
|
+ WebsocketSellerUtil.addSession(seq, session);
|
|
|
|
|
|
|
|
+ infoOfDevice(session,deviceMapper);
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
* 连接事件,加入注解
|
|
* 连接事件,加入注解
|
|
* 用户断开链接
|
|
* 用户断开链接
|
|
- *
|
|
|
|
- * @param seq
|
|
|
|
- * @param session
|
|
|
|
*/
|
|
*/
|
|
@OnClose
|
|
@OnClose
|
|
public void onClose(@PathParam(value = "seq") String seq, Session session) {
|
|
public void onClose(@PathParam(value = "seq") String seq, Session session) {
|
|
- String message = "[" + seq + "]退出了聊天室...";
|
|
|
|
|
|
+
|
|
// 删除映射关系
|
|
// 删除映射关系
|
|
- WebsocketUtil.removeSession(seq);
|
|
|
|
|
|
+ WebsocketSellerUtil.removeSession(seq);
|
|
|
|
|
|
-// WebsocketUtil.sendMessageForAll(message);
|
|
|
|
|
|
+// WebsocketSellerUtil.sendMessageForAll(message);
|
|
}
|
|
}
|
|
|
|
|
|
- /**
|
|
|
|
- * 当接收到用户上传的消息
|
|
|
|
- *
|
|
|
|
- * @param seq
|
|
|
|
- * @param session
|
|
|
|
- */
|
|
|
|
|
|
+
|
|
@OnMessage
|
|
@OnMessage
|
|
- public void onMessage(@PathParam(value = "seq") String seq, Session session, String message) {
|
|
|
|
- String msg = "[" + seq + "]:" + message;
|
|
|
|
- System.out.println("接收到信息:" + msg);
|
|
|
|
|
|
+ public void onMessage( Session session, String message) {
|
|
|
|
+// RemoteEndpoint.Async asyncRemote = session.getAsyncRemote();
|
|
|
|
+
|
|
|
|
+ System.out.println(message);
|
|
|
|
+ //下发数据
|
|
|
|
+// asyncRemote.sendText(message);
|
|
|
|
+
|
|
|
|
+ WebsocketSellerUtil.sendMessage(session,message);
|
|
// 直接广播
|
|
// 直接广播
|
|
-// WebsocketUtil.sendMessageForAll(msg);
|
|
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -90,4 +90,10 @@ public class SellerController {
|
|
}
|
|
}
|
|
throwable.printStackTrace();
|
|
throwable.printStackTrace();
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public void infoOfDevice(Session session, DeviceMapper deviceMapper) {
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|