Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
P
ps-fire-protection-reported
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
耿迪迪
ps-fire-protection-reported
Commits
e772b0ec
Commit
e772b0ec
authored
Aug 06, 2022
by
耿迪迪
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
消防监控数据接收
parents
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
600 additions
and
0 deletions
+600
-0
.gitignore
.gitignore
+76
-0
pom.xml
pom.xml
+132
-0
PsFireProtectionReportedApplication.java
.../java/com/zehong/PsFireProtectionReportedApplication.java
+16
-0
WebSocketConfig.java
src/main/java/com/zehong/config/WebSocketConfig.java
+18
-0
WebSocketBean.java
src/main/java/com/zehong/entity/WebSocketBean.java
+45
-0
WebSocketServer.java
src/main/java/com/zehong/service/WebSocketServer.java
+53
-0
WebSocketServiceImpl.java
...in/java/com/zehong/service/impl/WebSocketServiceImpl.java
+119
-0
application-prd.yml
src/main/resources/application-prd.yml
+34
-0
application-test.yml
src/main/resources/application-test.yml
+34
-0
application.yml
src/main/resources/application.yml
+37
-0
logback-spring.xml
src/main/resources/logback-spring.xml
+36
-0
No files found.
.gitignore
0 → 100644
View file @
e772b0ec
######################################################################
# Build Tools
.gradle
/build/
!gradle/wrapper/gradle-wrapper.jar
target/
!.mvn/wrapper/maven-wrapper.jar
######################################################################
# IDE
### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
/target/
*.class
*.jar
*.log
/logs/*
/target/*
.settings*
### NetBeans ###
nbproject/private/
build/*
nbbuild/
dist/
nbdist/
.nb-gradle/
######################################################################
# Others
*.log
*.xml.versionsBackup
*.swp
!*/build/*.java
!*/build/*.html
!*/build/*.xml
.DS_Store
node_modules
/dist
# local env files
.env.local
.env.*.local
# Log files
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
pom.xml
0 → 100644
View file @
e772b0ec
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<groupId>
com.zehong
</groupId>
<artifactId>
ps-fire-protection-reported
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<properties>
<java.version>
1.8
</java.version>
</properties>
<parent>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-parent
</artifactId>
<version>
2.5.2
</version>
<relativePath/>
<!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<!--集成redis-->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-redis
</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<version>
1.16.10
</version>
</dependency>
<!--mysql数据库驱动-->
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
<scope>
runtime
</scope>
</dependency>
<!--mybatis-->
<dependency>
<groupId>
org.mybatis.spring.boot
</groupId>
<artifactId>
mybatis-spring-boot-starter
</artifactId>
<version>
2.1.0
</version>
</dependency>
<!--常用工具类 -->
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
</dependency>
<!-- JSONObject对象依赖的jar包 -->
<dependency>
<groupId>
commons-beanutils
</groupId>
<artifactId>
commons-beanutils
</artifactId>
<version>
1.9.3
</version>
</dependency>
<dependency>
<groupId>
commons-collections
</groupId>
<artifactId>
commons-collections
</artifactId>
<version>
3.2.1
</version>
</dependency>
<dependency>
<groupId>
commons-lang
</groupId>
<artifactId>
commons-lang
</artifactId>
<version>
2.6
</version>
</dependency>
<dependency>
<groupId>
commons-logging
</groupId>
<artifactId>
commons-logging
</artifactId>
<version>
1.1.1
</version>
</dependency>
<dependency>
<groupId>
net.sf.ezmorph
</groupId>
<artifactId>
ezmorph
</artifactId>
<version>
1.0.6
</version>
</dependency>
<dependency>
<groupId>
net.sf.json-lib
</groupId>
<artifactId>
json-lib
</artifactId>
<version>
2.2.3
</version>
<classifier>
jdk15
</classifier>
<!-- jdk版本 -->
</dependency>
<!-- Json依赖架包下载 -->
<!--httpclient-->
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpclient
</artifactId>
<version>
4.5.2
</version>
</dependency>
<!--netty-->
<!--<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.36.Final</version>
</dependency>-->
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.7
</version>
</dependency>
<!-- pool 对象池 -->
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-pool2
</artifactId>
</dependency>
<!-- websocket 支持 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-websocket
</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
\ No newline at end of file
src/main/java/com/zehong/PsFireProtectionReportedApplication.java
0 → 100644
View file @
e772b0ec
package
com
.
zehong
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.autoconfigure.SpringBootApplication
;
/**
* @author gengd
* 消防监控数据接收
*/
@SpringBootApplication
public
class
PsFireProtectionReportedApplication
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
PsFireProtectionReportedApplication
.
class
,
args
);
}
}
src/main/java/com/zehong/config/WebSocketConfig.java
0 → 100644
View file @
e772b0ec
package
com
.
zehong
.
config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.socket.server.standard.ServerEndpointExporter
;
/**
* @author gengd
* webSocket配置
*/
@Configuration
public
class
WebSocketConfig
{
@Bean
public
ServerEndpointExporter
serverEndpointExporter
()
{
return
new
ServerEndpointExporter
();
}
}
src/main/java/com/zehong/entity/WebSocketBean.java
0 → 100644
View file @
e772b0ec
package
com
.
zehong
.
entity
;
import
javax.websocket.Session
;
import
java.util.concurrent.atomic.AtomicInteger
;
/**
* <websocket信息对象>
* <用于存储secket连接信息>
* @author wzh
* @version 2018-07-08 18:49
* @see [相关类/方法] (可选)
**/
public
class
WebSocketBean
{
/**
* 连接session对象
*/
private
Session
session
;
/**
* 连接错误次数
*/
private
AtomicInteger
erroerLinkCount
=
new
AtomicInteger
(
0
);
public
int
getErroerLinkCount
()
{
// 线程安全,以原子方式将当前值加1,注意:这里返回的是自增前的值
return
erroerLinkCount
.
getAndIncrement
();
}
public
void
cleanErrorNum
()
{
// 清空计数
erroerLinkCount
=
new
AtomicInteger
(
0
);
}
public
Session
getSession
()
{
return
session
;
}
public
void
setSession
(
Session
session
)
{
this
.
session
=
session
;
}
}
\ No newline at end of file
src/main/java/com/zehong/service/WebSocketServer.java
0 → 100644
View file @
e772b0ec
package
com
.
zehong
.
service
;
import
javax.websocket.EndpointConfig
;
import
javax.websocket.Session
;
/**
* <基于javax websocket通讯>
* <功能详细描述>
* @author wzh
* @version 2018-07-08 17:11
* @see [相关类/方法] (可选)
**/
public
interface
WebSocketServer
{
/**
* 连接建立成功调用的方法
* @param session session 对象
*/
void
onOpen
(
Session
session
,
EndpointConfig
config
);
/**
* 断开连接方法
*/
void
onClose
(
Session
session
);
/**
* 收到客户端消息后调用的方法
* @param session session 对象
* @param message 返回客户端的消息
*/
void
onMessage
(
Session
session
,
String
message
);
/**
* 发生异常时触发的方法
* @param session session 对象
* @param throwable 抛出的异常
*/
void
onError
(
Session
session
,
Throwable
throwable
);
/**
* 向单个客户端发送消息
* @param session session 对象
* @param message 发送给客户端的消息
*/
void
sendMessage
(
Session
session
,
String
message
);
/**
* 向所有在线用户群发消息
* @param message 发送给客户端的消息
*/
void
batchSendMessage
(
String
message
);
}
\ No newline at end of file
src/main/java/com/zehong/service/impl/WebSocketServiceImpl.java
0 → 100644
View file @
e772b0ec
package
com
.
zehong
.
service
.
impl
;
import
com.zehong.entity.WebSocketBean
;
import
com.zehong.service.WebSocketServer
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.stereotype.Component
;
import
javax.websocket.*
;
import
javax.websocket.server.ServerEndpoint
;
import
java.util.Map
;
import
java.util.Set
;
import
java.util.concurrent.ConcurrentHashMap
;
/**
* <基于javax websocket通讯>
* <各个方法的参数都是可以根据项目的实际情况改的>
* @author wzh
* @version 2018-07-08 17:11
* @see [相关类/方法] (可选)
**/
@ServerEndpoint
(
value
=
"/websocketServer"
)
@Component
(
"webSocketService"
)
public
class
WebSocketServiceImpl
implements
WebSocketServer
{
private
Logger
log
=
LoggerFactory
.
getLogger
(
WebSocketServiceImpl
.
class
);
/**
* 错误最大重试次数
*/
private
static
final
int
MAX_ERROR_NUM
=
10
;
/**
* 用来存放每个客户端对应的webSocket对象。
*/
private
static
Map
<
String
,
WebSocketBean
>
webSocketInfo
;
static
{
// concurrent包的线程安全map
webSocketInfo
=
new
ConcurrentHashMap
<>();
}
@OnOpen
@Override
public
void
onOpen
(
Session
session
,
EndpointConfig
config
)
{
// 连接成功当前对象放入websocket对象集合
WebSocketBean
bean
=
new
WebSocketBean
();
bean
.
setSession
(
session
);
webSocketInfo
.
put
(
session
.
getId
(),
bean
);
log
.
info
(
"客户端连接服务器session id :"
+
session
.
getId
()+
",当前连接数:"
+
webSocketInfo
.
size
());
}
@OnClose
@Override
public
void
onClose
(
Session
session
)
{
// 客户端断开连接移除websocket对象
webSocketInfo
.
remove
(
session
.
getId
());
log
.
info
(
"客户端断开连接,当前连接数:"
+
webSocketInfo
.
size
());
}
@OnMessage
@Override
public
void
onMessage
(
Session
session
,
String
message
)
{
log
.
info
(
"客户端 session id: "
+
session
.
getId
()+
",消息:"
+
message
);
// 此方法为客户端给服务器发送消息后进行的处理,可以根据业务自己处理,这里返回页面
sendMessage
(
session
,
"服务端返回"
+
message
);
}
@OnError
@Override
public
void
onError
(
Session
session
,
Throwable
throwable
)
{
log
.
error
(
"发生错误"
+
throwable
.
getMessage
(),
throwable
);
}
@Override
public
void
sendMessage
(
Session
session
,
String
message
)
{
try
{
// 发送消息
session
.
getBasicRemote
().
sendText
(
message
);
// 清空错误计数
webSocketInfo
.
get
(
session
.
getId
()).
cleanErrorNum
();
}
catch
(
Exception
e
)
{
log
.
error
(
"发送消息失败"
+
e
.
getMessage
(),
e
);
int
errorNum
=
webSocketInfo
.
get
(
session
.
getId
()).
getErroerLinkCount
();
// 小于最大重试次数重发
if
(
errorNum
<=
MAX_ERROR_NUM
)
{
sendMessage
(
session
,
message
);
}
else
{
log
.
error
(
"发送消息失败超过最大次数"
);
// 清空错误计数
webSocketInfo
.
get
(
session
.
getId
()).
cleanErrorNum
();
}
}
}
@Override
public
void
batchSendMessage
(
String
message
)
{
Set
<
Map
.
Entry
<
String
,
WebSocketBean
>>
set
=
webSocketInfo
.
entrySet
();
for
(
Map
.
Entry
<
String
,
WebSocketBean
>
map
:
set
)
{
sendMessage
(
map
.
getValue
().
getSession
(),
message
);
}
}
}
src/main/resources/application-prd.yml
0 → 100644
View file @
e772b0ec
#mysql
spring
:
datasource
:
username
:
root
password
:
root@123
url
:
jdbc:mysql://36.148.23.59:3306/ps_xf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
driver-class-name
:
com.mysql.cj.jdbc.Driver
# redis 配置
redis
:
# 地址
host
:
36.148.23.59
# 端口,默认为6379
port
:
6379
# 数据库索引
database
:
6
# 密码
password
:
1qaz2wsx3edc
# 连接超时时间
timeout
:
10s
lettuce
:
pool
:
# 连接池中的最小空闲连接
min-idle
:
0
# 连接池中的最大空闲连接
max-idle
:
8
# 连接池的最大数据库连接数
max-active
:
8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait
:
-1ms
#webSocektUrl
webSocektUrl
:
http://36.148.23.59:8907/gassafety/websocket/send
\ No newline at end of file
src/main/resources/application-test.yml
0 → 100644
View file @
e772b0ec
#mysql
spring
:
datasource
:
username
:
root
password
:
root@123
url
:
jdbc:mysql://36.148.23.59:3306/ps_xf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
driver-class-name
:
com.mysql.cj.jdbc.Driver
# redis 配置
redis
:
# 地址
host
:
36.148.23.59
# 端口,默认为6379
port
:
6379
# 数据库索引
database
:
6
# 密码
password
:
1qaz2wsx3edc
# 连接超时时间
timeout
:
10s
lettuce
:
pool
:
# 连接池中的最小空闲连接
min-idle
:
0
# 连接池中的最大空闲连接
max-idle
:
8
# 连接池的最大数据库连接数
max-active
:
8
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait
:
-1ms
#webSocektUrl
webSocektUrl
:
http://36.148.23.59:8901/gassafety/websocket/send
\ No newline at end of file
src/main/resources/application.yml
0 → 100644
View file @
e772b0ec
# 开发环境配置
server
:
# 服务器的HTTP端口,默认为8080
port
:
8908
servlet
:
# 应用的访问路径
context-path
:
/psFireProtectionReported
tomcat
:
# tomcat的URI编码
uri-encoding
:
UTF-8
# tomcat最大线程数,默认为200
max-threads
:
800
# Tomcat启动初始化的线程数,默认值25
min-spare-threads
:
30
spring
:
profiles
:
active
:
test
#mybatis的相关配置
#mybatis:
# #mapper配置文件
# mapper-locations: classpath:mapper/*.xml
# type-aliases-package: com.zehong.gassdevicereport.entity
# #开启驼峰命名
# configuration:
# map-underscore-to-camel-case: true
# 日志配置
logging
:
level
:
com.zehong
:
debug
org.springframework
:
warn
file
:
path
:
./logs
\ No newline at end of file
src/main/resources/logback-spring.xml
0 → 100644
View file @
e772b0ec
<?xml version="1.0" encoding="UTF-8"?>
<configuration
scan=
"true"
scanPeriod=
"60 seconds"
debug=
"true"
>
<conversionRule
conversionWord=
"clr"
converterClass=
"org.springframework.boot.logging.logback.ColorConverter"
/>
<conversionRule
conversionWord=
"wex"
converterClass=
"org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"
/>
<conversionRule
conversionWord=
"wEx"
converterClass=
"org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"
/>
<property
name=
"CONSOLE_LOG_PATTERN"
value=
"${CONSOLE_LOG_PATTERN:-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint} %clr(%X{TRANCE_ID:-}) %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<property
name=
"FILE_LOG_PATTERN"
value=
"${FILE_LOG_PATTERN:-%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}} %X{TRANCE_ID:-} ${LOG_LEVEL_PATTERN:-%5p} ${PID:- } --- [%t] %-40.40logger{39} : %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"
/>
<property
name=
"LOG_FILE"
value=
"psFireProtectionReported.log"
/>
<!-- 控制台输出配置 -->
<appender
name=
"CONSOLE"
class=
"ch.qos.logback.core.ConsoleAppender"
>
<encoder>
<pattern>
${CONSOLE_LOG_PATTERN}
</pattern>
</encoder>
</appender>
<!-- 文件输出配置 -->
<appender
name=
"FILE"
class=
"ch.qos.logback.core.rolling.RollingFileAppender"
>
<encoder>
<pattern>
${FILE_LOG_PATTERN}
</pattern>
</encoder>
<file>
${LOG_PATH}/${LOG_FILE}
</file>
<rollingPolicy
class=
"ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"
>
<!-- 分片格式以及压缩设置 -->
<fileNamePattern>
${LOG_PATH}/${LOG_FILE}.%d{yyyy-MM-dd}.%i.gz
</fileNamePattern>
<!-- 单个分片文件大小,默认是10M(压缩前) -->
<maxFileSize>
${LOG_FILE_MAX_SIZE:-10MB}
</maxFileSize>
<!-- 日志保存的最大时间,默认是永久保存 -->
<maxHistory>
${LOG_FILE_MAX_HISTORY:-30}
</maxHistory>
</rollingPolicy>
</appender>
<root
level=
"INFO"
>
<appender-ref
ref=
"CONSOLE"
/>
<appender-ref
ref=
"FILE"
/>
</root>
</configuration>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment