From ccc6e51f22bf0b2b0cebb84e32f55a5cebdb9692 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Fri, 13 Aug 2021 14:59:26 +0800
Subject: [PATCH] 问题修复

---
 src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java         |   33 +++++++----
 src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java                |    1 
 src/main/java/org/springblade/modules/webscoket/service/impl/PushMsgServiceImpl.java |   54 +++++++++++------
 src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java    |   45 ++++++++------
 4 files changed, 83 insertions(+), 50 deletions(-)

diff --git a/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java b/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java
index 3ca46e1..2e4796d 100644
--- a/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java
+++ b/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java
@@ -62,6 +62,7 @@
 		System.out.println("客户端断开连接:" + ctx.channel());
 		//用户离线状态
 		String name = ChannelSupervise.findName(ctx.channel().id().asShortText());
+		System.out.println(name);
 		if ( name != null &&!name.equals("ping") ){
 			NettyConfig.getChannelGroup().remove(ctx.channel());
 			removeUserId(ctx);
diff --git a/src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java b/src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java
index b94916e..2a3e9a6 100644
--- a/src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java
+++ b/src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java
@@ -20,33 +20,40 @@
 @RequestMapping("pushMsg")
 public class PushMsgController {
 
-    @Autowired
-    private IPushMsgService pushMsgService;
+	@Autowired
+	private IPushMsgService pushMsgService;
 
-    @PostMapping("/pushUser")
-    public String pushUser(String userId,String msg){
-        pushMsgService.pushMsg(userId, msg);
-        return "消息发送成功:"+msg;
-    }
+	@PostMapping("/pushUser")
+	public String pushUser(String userId, String msg) {
+		pushMsgService.pushMsg(userId, msg);
+		return "消息发送成功:" + msg;
+	}
 
-    @PostMapping("/pushAll")
-    public String pushAll(String msg){
-        pushMsgService.pushMsg(msg);
-        return "消息发送成功:"+msg;
-    }
+	@PostMapping("/pushAll")
+	public String pushAll(String msg) {
+		pushMsgService.pushMsg(msg);
+		return "消息发送成功:" + msg;
+	}
 
-    @GetMapping("/inviteVideoCall")
-	public R<Map> inviteVideoCall(String userId,String type){
-    	//获取当前时间戳作为房间号
+	@GetMapping("/inviteVideoCall")
+	public R<Map> inviteVideoCall(String userId, String type, String name,String faqiid) {
+		//获取当前时间戳作为房间号
 		String roomId = "";
 		Map<String, Object> map = new HashMap<String, Object>();
 		String time = String.valueOf(new Date().getTime());
-		int msg = pushMsgService.inviteVideoCall(userId,time,type);
-		map.put("type",type);
-		map.put("roomId",time);
-		map.put("res",0);
+		int msg = pushMsgService.inviteVideoCall(userId, time, type, name,faqiid);
+		map.put("type", type);
+		map.put("roomId", time);
+		map.put("res", msg);
 
 		return R.data(map);
 	}
 
+	@GetMapping("/closeVideoCall")
+	public void closeVideoCall(String sentId, String acceptId) {
+
+		pushMsgService.closeVideoCall(sentId, acceptId);
+
+	}
+
 }
diff --git a/src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java b/src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java
index f432e1a..36e9283 100644
--- a/src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java
+++ b/src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java
@@ -5,22 +5,31 @@
  */
 public interface IPushMsgService {
 
-    /**
-     * 给指定用户发送消息
-     * @param userId
-     * @param msg
-     */
-    void pushMsg(String userId,String msg);
+	/**
+	 * 给指定用户发送消息
+	 *
+	 * @param userId
+	 * @param msg
+	 */
+	void pushMsg(String userId, String msg);
 
-    /**
-     * 给所有用户发送消息
-     * @param msg
-     */
-    void pushMsg(String msg);
+	/**
+	 * 给所有用户发送消息
+	 *
+	 * @param msg
+	 */
+	void pushMsg(String msg);
 
 	/**
 	 * 给指定用户发起视频邀请
 	 */
-	int inviteVideoCall(String userid,String time,String type);
+	int inviteVideoCall(String userid, String time, String type, String name,String faqiid);
+
+	/**
+	 * 关闭视频请求
+	 *
+	 * @return
+	 */
+	void closeVideoCall(String sentId, String acceptId);
 
 }
diff --git a/src/main/java/org/springblade/modules/webscoket/service/impl/PushMsgServiceImpl.java b/src/main/java/org/springblade/modules/webscoket/service/impl/PushMsgServiceImpl.java
index b886079..be23bff 100644
--- a/src/main/java/org/springblade/modules/webscoket/service/impl/PushMsgServiceImpl.java
+++ b/src/main/java/org/springblade/modules/webscoket/service/impl/PushMsgServiceImpl.java
@@ -18,36 +18,52 @@
  */
 @Service
 public class PushMsgServiceImpl implements IPushMsgService {
-    @Override
-    public void pushMsg(String userId, String msg) {
-        Channel channel = NettyConfig.getUserChannelMap().get(userId);
-		if (channel != null){
+	@Override
+	public void pushMsg(String userId, String msg) {
+		Channel channel = NettyConfig.getUserChannelMap().get(userId);
+		if (channel != null) {
 			channel.writeAndFlush(new TextWebSocketFrame(msg));
 		}
 
-    }
+	}
 
-    @Override
-    public void pushMsg(String msg) {
-        ChannelGroup group = NettyConfig.getChannelGroup();
-        String name = group.name();
-        System.out.println("空间大小:"+group.size()+",名字:"+name);
-        group.writeAndFlush(new TextWebSocketFrame(msg));
-    }
+	@Override
+	public void pushMsg(String msg) {
+		ChannelGroup group = NettyConfig.getChannelGroup();
+		String name = group.name();
+		System.out.println("空间大小:" + group.size() + ",名字:" + name);
+		group.writeAndFlush(new TextWebSocketFrame(msg));
+	}
 
-    @Override
-	public int inviteVideoCall(String userId,String time,String type) {
-    	//返回值
+	@Override
+	public int inviteVideoCall(String userId, String time, String type, String name,String faqiid) {
+		//返回值
 		int res = 0;
 		Channel channel = NettyConfig.getUserChannelMap().get(userId);
-		Map<String, Object> map = new HashMap<String, Object>();
 		JSONObject jsonObject = new JSONObject();
-		jsonObject.put("type",type);
-		jsonObject.put("roomId",time);
-		if (channel != null){
+		jsonObject.put("type", type);
+		jsonObject.put("roomId", time);
+		jsonObject.put("name", name);
+		jsonObject.put("faqiid", faqiid);
+		if (channel != null) {
 			channel.writeAndFlush(new TextWebSocketFrame(String.valueOf(jsonObject)));
 			res = 1;
 		}
 		return res;
 	}
+
+	@Override
+	public void closeVideoCall(String sentId, String acceptId) {
+		Channel channel1 = NettyConfig.getUserChannelMap().get(sentId);
+		Channel channel2 = NettyConfig.getUserChannelMap().get(acceptId);
+		JSONObject jsonObject = new JSONObject();
+		jsonObject.put("type", "close");
+		if (channel1 != null) {
+			channel1.writeAndFlush(new TextWebSocketFrame(String.valueOf(jsonObject)));
+		}
+		if (channel2 != null) {
+			channel2.writeAndFlush(new TextWebSocketFrame(String.valueOf(jsonObject)));
+		}
+
+	}
 }

--
Gitblit v1.9.3