From e654a4570cca83fe0915bc8da14b1d8c2bc92d11 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Thu, 12 Aug 2021 09:53:44 +0800
Subject: [PATCH] 问题修复
---
src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java | 5 ++
src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java | 42 +++++++++++---------
src/main/resources/application-dev.yml | 4 ++
src/main/java/org/springblade/modules/webscoket/service/impl/PushMsgServiceImpl.java | 21 ++++++++++
src/main/java/org/springblade/Application.java | 11 ++++-
src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java | 22 +++++++++++
6 files changed, 83 insertions(+), 22 deletions(-)
diff --git a/src/main/java/org/springblade/Application.java b/src/main/java/org/springblade/Application.java
index 113e5eb..dcf08a5 100644
--- a/src/main/java/org/springblade/Application.java
+++ b/src/main/java/org/springblade/Application.java
@@ -16,11 +16,11 @@
*/
package org.springblade;
-import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
import org.springblade.common.constant.CommonConstant;
import org.springblade.core.launch.BladeApplication;
+import org.springblade.modules.webscoket.WebSocketServer;
+import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.scheduling.annotation.EnableScheduling;
/**
@@ -30,11 +30,16 @@
*/
@EnableScheduling
@SpringBootApplication
-public class Application {
+public class Application implements CommandLineRunner {
public static void main(String[] args) {
BladeApplication.run(CommonConstant.APPLICATION_NAME, Application.class, args);
}
+ @Override
+ public void run(String... args) throws Exception {
+ WebSocketServer webSocketServer= new WebSocketServer(9034);
+ }
+
}
diff --git a/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java b/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java
index 7ef33f5..3ca46e1 100644
--- a/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java
+++ b/src/main/java/org/springblade/modules/webscoket/WebSocketHandler.java
@@ -1,5 +1,7 @@
package org.springblade.modules.webscoket;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelFuture;
@@ -61,12 +63,6 @@
//用户离线状态
String name = ChannelSupervise.findName(ctx.channel().id().asShortText());
if ( name != null &&!name.equals("ping") ){
- String num="0";
- //工作状态(0闲置,1工作中)
- String workSt = "0";
- webSocketHandler.suserService.updateUser(num,name,workSt);
- //ChannelSupervise.removeChannel(ctx.channel());
-
NettyConfig.getChannelGroup().remove(ctx.channel());
removeUserId(ctx);
}
@@ -100,21 +96,29 @@
if (!request.equals("ping")){
- NettyConfig.getUserChannelMap().put(request,ctx.channel());
+ JSONObject jsonObj = JSON.parseObject(request);
+ String type = jsonObj.get("type").toString();
- //将用户id作为自定义属性加入到channel 中,方便随时channel中获取用户id
- AttributeKey<String> key = AttributeKey.valueOf("userId");
- ctx.channel().attr(key).setIfAbsent(request);
+ if (type != null && type.equals("login")){
+ //登录链接
+ String id = jsonObj.get("id").toString();
+ NettyConfig.getUserChannelMap().put(id,ctx.channel());
- //把用户信息添加到通道里
- ChannelSupervise.addChannel(ctx.channel(),request);
- //用户在线状态
- this.on=request;
- //在线状态(0掉线,1在线)
- String num="1";
- //工作状态(0闲置,1工作中)
- String workSt = "0";
- webSocketHandler.suserService.updateUser(num,request,workSt);
+ System.out.println(jsonObj.get("type"));
+ System.out.println(jsonObj.get("id"));
+
+ //将用户id作为自定义属性加入到channel 中,方便随时channel中获取用户id
+ AttributeKey<String> key = AttributeKey.valueOf("userId");
+ ctx.channel().attr(key).setIfAbsent(id);
+ //把用户信息添加到通道里
+ ChannelSupervise.addChannel(ctx.channel(),id);
+ }
+
+
+
+
+
+
}
// TextWebSocketFrame tws = new TextWebSocketFrame(new Date().toString()
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 ff69925..b94916e 100644
--- a/src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java
+++ b/src/main/java/org/springblade/modules/webscoket/controller/PushMsgController.java
@@ -1,15 +1,23 @@
package org.springblade.modules.webscoket.controller;
+import org.springblade.core.tool.api.R;
import org.springblade.modules.webscoket.service.IPushMsgService;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
/**
* @author lq
* @date 2020/4/1 11:22
*/
@RestController
+@RequestMapping("pushMsg")
public class PushMsgController {
@Autowired
@@ -27,4 +35,18 @@
return "消息发送成功:"+msg;
}
+ @GetMapping("/inviteVideoCall")
+ public R<Map> inviteVideoCall(String userId,String type){
+ //获取当前时间戳作为房间号
+ 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);
+
+ return R.data(map);
+ }
+
}
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 3d2badb..f432e1a 100644
--- a/src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java
+++ b/src/main/java/org/springblade/modules/webscoket/service/IPushMsgService.java
@@ -18,4 +18,9 @@
*/
void pushMsg(String msg);
+ /**
+ * 给指定用户发起视频邀请
+ */
+ int inviteVideoCall(String userid,String time,String type);
+
}
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 5f046f4..b886079 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
@@ -1,11 +1,16 @@
package org.springblade.modules.webscoket.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import io.netty.buffer.ByteBuf;
import io.netty.channel.Channel;
import io.netty.channel.group.ChannelGroup;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import org.springblade.modules.nettyServer.NettyConfig;
import org.springblade.modules.webscoket.service.IPushMsgService;
import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* @author lq
@@ -29,4 +34,20 @@
System.out.println("空间大小:"+group.size()+",名字:"+name);
group.writeAndFlush(new TextWebSocketFrame(msg));
}
+
+ @Override
+ public int inviteVideoCall(String userId,String time,String type) {
+ //返回值
+ 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){
+ channel.writeAndFlush(new TextWebSocketFrame(String.valueOf(jsonObject)));
+ res = 1;
+ }
+ return res;
+ }
}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 01bbe18..ff900ce 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -17,6 +17,10 @@
# username: root
# password: jfpt123
+# url: jdbc:mysql://localhost:2083/qfqkpublic?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
+# username: root
+# password: zhba0728
+
url: jdbc:mysql://223.82.109.183:2083/qfqkpublic?useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
username: root
password: zhba0728
--
Gitblit v1.9.3