Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
im-pool
Project
Project
Details
Activity
Releases
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
haoyanbin
im-pool
Commits
c83313ae
Commit
c83313ae
authored
Dec 05, 2022
by
haoyanbin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1
parent
a2120e79
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
49 additions
and
21 deletions
+49
-21
client.go
pool/client.go
+26
-2
publicApi.go
pool/publicApi.go
+23
-19
No files found.
pool/client.go
View file @
c83313ae
...
@@ -191,6 +191,12 @@ Loop:
...
@@ -191,6 +191,12 @@ Loop:
c
.
onError
(
errors
.
New
(
"接收数据解析失败!!连接ID:"
+
c
.
Id
+
"原因:"
+
err
.
Error
()))
c
.
onError
(
errors
.
New
(
"接收数据解析失败!!连接ID:"
+
c
.
Id
+
"原因:"
+
err
.
Error
()))
break
Loop
break
Loop
}
}
if
msg
.
ProcedureType
==
9
{
c
.
setPing
()
}
if
msg
.
ProcedureType
==
10
{
c
.
setPong
()
}
SaveMsg
(
msg
)
SaveMsg
(
msg
)
//rabbitMQ.PublishSimple(string(message))
//rabbitMQ.PublishSimple(string(message))
c
.
readMessage
(
msg
)
c
.
readMessage
(
msg
)
...
@@ -312,7 +318,7 @@ Loop:
...
@@ -312,7 +318,7 @@ Loop:
}
}
if
p
==
1
{
if
p
==
1
{
c
.
conn
.
SetWriteDeadline
(
time
.
Now
()
.
Add
(
writeWait
))
c
.
conn
.
SetWriteDeadline
(
time
.
Now
()
.
Add
(
writeWait
))
if
err
:=
c
.
conn
.
WriteMessage
(
websocket
.
PingMessage
,
nil
);
err
!=
nil
{
if
err
:=
c
.
conn
.
WriteMessage
(
websocket
.
TextMessage
,
SerializeJson
(
&
SendMsg
{
ProcedureType
:
9
})
);
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
c
.
onError
(
errors
.
New
(
"连接ID:"
+
c
.
Id
+
"关闭写入IO对象出错,连接中断"
+
err
.
Error
()))
c
.
onError
(
errors
.
New
(
"连接ID:"
+
c
.
Id
+
"关闭写入IO对象出错,连接中断"
+
err
.
Error
()))
goto
Loop1
goto
Loop1
...
@@ -324,7 +330,7 @@ Loop:
...
@@ -324,7 +330,7 @@ Loop:
}
}
if
p
==
1
{
if
p
==
1
{
c
.
conn
.
SetWriteDeadline
(
time
.
Now
()
.
Add
(
writeWait
))
c
.
conn
.
SetWriteDeadline
(
time
.
Now
()
.
Add
(
writeWait
))
if
err
:=
c
.
conn
.
WriteMessage
(
websocket
.
PongMessage
,
nil
);
err
!=
nil
{
if
err
:=
c
.
conn
.
WriteMessage
(
websocket
.
TextMessage
,
SerializeJson
(
&
SendMsg
{
ProcedureType
:
10
})
);
err
!=
nil
{
fmt
.
Println
(
err
)
fmt
.
Println
(
err
)
c
.
onError
(
errors
.
New
(
"回复客户端PongMessage出现异常:"
+
err
.
Error
()))
c
.
onError
(
errors
.
New
(
"回复客户端PongMessage出现异常:"
+
err
.
Error
()))
goto
Loop1
goto
Loop1
...
@@ -336,6 +342,24 @@ Loop1:
...
@@ -336,6 +342,24 @@ Loop1:
c
.
close
()
c
.
close
()
}
}
func
(
c
*
Client
)
setPong
()
{
c
.
conn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
pongWait
))
fmt
.
Println
(
"收到pong---"
,
c
.
Id
)
c
.
pingPeriodTicker
.
Reset
(
pingPeriod
)
c
.
onPong
()
}
func
(
c
*
Client
)
setPing
()
{
c
.
conn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
pongWait
))
c
.
pingPeriodTicker
.
Reset
(
pingPeriod
)
fmt
.
Println
(
"收到ping---"
,
c
.
Id
)
c
.
recvPing
<-
1
//if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
// c.onError(errors.New("回复客户端PongMessage出现异常:"+err.Error()))
//}
c
.
onPing
()
}
func
(
c
*
Client
)
send
(
msg
*
SendMsg
)
{
func
(
c
*
Client
)
send
(
msg
*
SendMsg
)
{
timeout
:=
time
.
NewTimer
(
time
.
Millisecond
*
800
)
timeout
:=
time
.
NewTimer
(
time
.
Millisecond
*
800
)
defer
timeout
.
Stop
()
defer
timeout
.
Stop
()
...
...
pool/publicApi.go
View file @
c83313ae
...
@@ -85,25 +85,25 @@ func (c *Client) OpenClient(w http.ResponseWriter, r *http.Request, head http.He
...
@@ -85,25 +85,25 @@ func (c *Client) OpenClient(w http.ResponseWriter, r *http.Request, head http.He
c
.
conn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
pongWait
))
c
.
conn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
pongWait
))
c
.
pingPeriodTicker
=
time
.
NewTimer
(
pingPeriod
)
c
.
pingPeriodTicker
=
time
.
NewTimer
(
pingPeriod
)
c
.
closeTicker
=
time
.
NewTimer
(
closeWait
)
c
.
closeTicker
=
time
.
NewTimer
(
closeWait
)
c
.
conn
.
SetPongHandler
(
func
(
str
string
)
error
{
//
c.conn.SetPongHandler(func(str string) error {
c
.
conn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
pongWait
))
//
c.conn.SetReadDeadline(time.Now().Add(pongWait))
fmt
.
Println
(
"收到pong---"
,
c
.
Id
,
str
)
//
fmt.Println("收到pong---", c.Id, str)
c
.
pingPeriodTicker
.
Reset
(
pingPeriod
)
//
c.pingPeriodTicker.Reset(pingPeriod)
c
.
onPong
()
//
c.onPong()
return
nil
//
return nil
})
//
})
//
c
.
conn
.
SetPingHandler
(
func
(
str
string
)
error
{
//
c.conn.SetPingHandler(func(str string) error {
c
.
conn
.
SetReadDeadline
(
time
.
Now
()
.
Add
(
pongWait
))
//
c.conn.SetReadDeadline(time.Now().Add(pongWait))
c
.
pingPeriodTicker
.
Reset
(
pingPeriod
)
//
c.pingPeriodTicker.Reset(pingPeriod)
fmt
.
Println
(
"收到ping---"
,
c
.
Id
,
str
)
//
fmt.Println("收到ping---", c.Id, str)
c
.
recvPing
<-
1
//
c.recvPing <- 1
//if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
//
//if err := c.conn.WriteMessage(websocket.PongMessage, nil); err != nil {
// c.onError(errors.New("回复客户端PongMessage出现异常:"+err.Error()))
//
// c.onError(errors.New("回复客户端PongMessage出现异常:"+err.Error()))
//}
//
//}
c
.
onPing
()
//
c.onPing()
return
nil
//
return nil
})
//
})
c
.
conn
.
SetCloseHandler
(
func
(
code
int
,
str
string
)
error
{
c
.
conn
.
SetCloseHandler
(
func
(
code
int
,
str
string
)
error
{
//收到客户端连接关闭时的回调
//收到客户端连接关闭时的回调
...
@@ -354,6 +354,10 @@ func GetClientInfoByToken(token string) (*UserInfo, error) {
...
@@ -354,6 +354,10 @@ func GetClientInfoByToken(token string) (*UserInfo, error) {
// 会话状态 1 开始导诊 2 等待连接 3 双方建立连接 4 结束会话 5 离线 6 对话 7 已读 8 超时自动结束
// 会话状态 1 开始导诊 2 等待连接 3 双方建立连接 4 结束会话 5 离线 6 对话 7 已读 8 超时自动结束
func
SaveMsg
(
msg
*
SendMsg
)
{
func
SaveMsg
(
msg
*
SendMsg
)
{
if
msg
.
ProcedureType
==
9
||
msg
.
ProcedureType
==
10
{
return
}
msg
.
SendTime
=
time
.
Now
()
.
Format
(
"2006-01-02 15:04:05"
)
msg
.
SendTime
=
time
.
Now
()
.
Format
(
"2006-01-02 15:04:05"
)
user
:=
GetClientInfoById
(
msg
.
FromClientId
)
user
:=
GetClientInfoById
(
msg
.
FromClientId
)
...
...
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