Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
H
hilo-userCenter
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
hujiebin
hilo-userCenter
Commits
7ed5bed8
You need to sign in or sign up before continuing.
Commit
7ed5bed8
authored
Jul 28, 2023
by
hujiebin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Feature/body size
parent
606f1661
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
214 additions
and
0 deletions
+214
-0
main.go
main.go
+42
-0
roomManager.go
manager/roomManager.go
+79
-0
userCenter.proto
protocol/userCenter.proto
+41
-0
userProxy.proto
protocol/userProxy.proto
+52
-0
No files found.
main.go
View file @
7ed5bed8
...
@@ -61,6 +61,7 @@ type BroadcastChanMsg struct {
...
@@ -61,6 +61,7 @@ type BroadcastChanMsg struct {
var
(
var
(
userManager
*
manager
.
UserManager
=
nil
userManager
*
manager
.
UserManager
=
nil
termManager
*
manager
.
TerminalManager
=
nil
termManager
*
manager
.
TerminalManager
=
nil
roomManager
*
manager
.
RoomManager
=
nil
)
)
var
logDir
=
"/var/log/hilo/"
var
logDir
=
"/var/log/hilo/"
...
@@ -257,6 +258,43 @@ func (s *server) Transmit(ctx context.Context, in *userCenter.BizMessage) (*user
...
@@ -257,6 +258,43 @@ func (s *server) Transmit(ctx context.Context, in *userCenter.BizMessage) (*user
return
rsp
,
nil
return
rsp
,
nil
}
}
func
(
s
*
server
)
EnterRoom
(
ctx
context
.
Context
,
in
*
userCenter
.
EnterRoomMessage
)
(
*
userCenter
.
EnterRoomMessageRsp
,
error
)
{
if
err
:=
roomManager
.
AddRoomUser
(
in
.
GetUid
(),
in
.
GetGroupId
());
err
!=
nil
{
return
nil
,
err
}
return
&
userCenter
.
EnterRoomMessageRsp
{
Status
:
0
,
},
nil
}
func
(
s
*
server
)
LeaveRoom
(
ctx
context
.
Context
,
in
*
userCenter
.
LeaveRoomMessage
)
(
*
userCenter
.
LeaveRoomMessageRsp
,
error
)
{
if
err
:=
roomManager
.
DelRoomUser
(
in
.
GetUid
(),
in
.
GetGroupId
());
err
!=
nil
{
return
nil
,
err
}
return
&
userCenter
.
LeaveRoomMessageRsp
{
Status
:
0
,
},
nil
}
func
(
s
*
server
)
RoomHeartbeat
(
ctx
context
.
Context
,
in
*
userCenter
.
RoomHeartbeatMessage
)
(
*
userCenter
.
RoomHeartbeatMessageRsp
,
error
)
{
if
err
:=
roomManager
.
UpdateRoomUser
(
in
.
GetUid
(),
in
.
GetGroupId
());
err
!=
nil
{
return
nil
,
err
}
return
&
userCenter
.
RoomHeartbeatMessageRsp
{
Status
:
0
,
},
nil
}
func
(
s
*
server
)
GetLastRoomHeartbeat
(
ctx
context
.
Context
,
in
*
userCenter
.
GetLastRoomHeartbeatMessage
)
(
*
userCenter
.
GetLastRoomHeartbeatMessageResp
,
error
)
{
ts
,
err
:=
roomManager
.
GetLastRoomUserHeartbeat
(
in
.
GetUid
(),
in
.
GetGroupId
())
if
err
!=
nil
{
return
nil
,
err
}
return
&
userCenter
.
GetLastRoomHeartbeatMessageResp
{
Timestamp
:
ts
,
},
nil
}
func
realBroadcast
(
addr
string
,
uids
[]
uint64
,
msg
*
userCenter
.
BroadcastMessage
)
{
func
realBroadcast
(
addr
string
,
uids
[]
uint64
,
msg
*
userCenter
.
BroadcastMessage
)
{
mylogrus
.
MyLog
.
Infof
(
"Broadcasting: Addr %s: users: %v"
,
addr
,
uids
)
mylogrus
.
MyLog
.
Infof
(
"Broadcasting: Addr %s: users: %v"
,
addr
,
uids
)
...
@@ -499,6 +537,10 @@ func main() {
...
@@ -499,6 +537,10 @@ func main() {
Ctx
:
context
.
Background
(),
Ctx
:
context
.
Background
(),
RedisClient
:
rdb
,
RedisClient
:
rdb
,
}
}
roomManager
=
&
manager
.
RoomManager
{
Ctx
:
context
.
Background
(),
RedisClient
:
rdb
,
}
mylogrus
.
MyLog
.
Infof
(
"Connected to Redis %s
\n
"
,
redisAddress
)
mylogrus
.
MyLog
.
Infof
(
"Connected to Redis %s
\n
"
,
redisAddress
)
...
...
manager/roomManager.go
0 → 100644
View file @
7ed5bed8
package
manager
import
(
"context"
"fmt"
"github.com/go-redis/redis/v8"
"hilo-userCenter/common/mylogrus"
"log"
"time"
)
func
getRoomUserKey
(
groupId
string
)
string
{
return
fmt
.
Sprintf
(
"room:%v"
,
groupId
)
}
type
RoomManager
struct
{
Ctx
context
.
Context
RedisClient
*
redis
.
Client
}
func
(
m
*
RoomManager
)
AddRoomUser
(
uid
uint64
,
groupId
string
)
error
{
key
:=
getRoomUserKey
(
groupId
)
err
:=
m
.
RedisClient
.
ZAdd
(
m
.
Ctx
,
key
,
&
redis
.
Z
{
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Member
:
fmt
.
Sprintf
(
"%d"
,
uid
),
})
.
Err
()
if
err
!=
nil
{
mylogrus
.
MyLog
.
Errorf
(
"AddRoomUser fail:%v"
,
err
)
return
nil
}
return
err
}
func
(
m
*
RoomManager
)
DelRoomUser
(
uid
uint64
,
groupId
string
)
error
{
key
:=
getRoomUserKey
(
groupId
)
err
:=
m
.
RedisClient
.
ZRem
(
m
.
Ctx
,
key
,
fmt
.
Sprintf
(
"%d"
,
uid
))
.
Err
()
if
err
!=
nil
{
mylogrus
.
MyLog
.
Errorf
(
"DelRoomUser fail:%v"
,
err
)
return
nil
}
return
err
}
func
(
m
*
RoomManager
)
UpdateRoomUser
(
uid
uint64
,
groupId
string
)
error
{
key
:=
getRoomUserKey
(
groupId
)
err
:=
m
.
RedisClient
.
ZAdd
(
m
.
Ctx
,
key
,
&
redis
.
Z
{
Score
:
float64
(
time
.
Now
()
.
Unix
()),
Member
:
fmt
.
Sprintf
(
"%d"
,
uid
),
})
.
Err
()
if
err
!=
nil
{
mylogrus
.
MyLog
.
Errorf
(
"AddRoomUser fail:%v"
,
err
)
return
nil
}
return
err
}
// 获取用户在房间的最后一次心跳
func
(
m
*
RoomManager
)
GetLastRoomUserHeartbeat
(
uid
uint64
,
groupId
string
)
(
int64
,
error
)
{
key
:=
getRoomUserKey
(
groupId
)
tx
,
err
:=
m
.
RedisClient
.
ZScore
(
m
.
Ctx
,
key
,
fmt
.
Sprintf
(
"%d"
,
uid
))
.
Result
()
if
err
!=
nil
&&
err
!=
redis
.
Nil
{
mylogrus
.
MyLog
.
Errorf
(
"GetLastRoomUserHeartbeat fail:%v"
,
err
)
return
0
,
err
}
// redis nil means 0
return
int64
(
tx
),
nil
}
func
(
m
*
RoomManager
)
GetAll
()
*
map
[
string
]
string
{
//ctx, _ := context.WithTimeout(m.Ctx, time.Millisecond*500)
//result := m.RedisClient.Get(ctx, field)
result
,
err
:=
m
.
RedisClient
.
HGetAll
(
m
.
Ctx
,
user_key
)
.
Result
()
if
err
!=
nil
{
log
.
Printf
(
"HGetAll error: %s
\n
"
,
err
.
Error
())
return
nil
}
else
{
return
&
result
}
}
protocol/userCenter.proto
View file @
7ed5bed8
...
@@ -85,6 +85,43 @@ message BizMessageRsp {
...
@@ -85,6 +85,43 @@ message BizMessageRsp {
uint32
status
=
1
;
uint32
status
=
1
;
}
}
message
EnterRoomMessage
{
uint64
uid
=
1
;
string
groupId
=
2
;
}
message
EnterRoomMessageRsp
{
uint32
status
=
1
;
}
message
LeaveRoomMessage
{
uint64
uid
=
1
;
string
groupId
=
2
;
}
message
LeaveRoomMessageRsp
{
uint32
status
=
1
;
}
message
RoomHeartbeatMessage
{
uint64
uid
=
1
;
string
groupId
=
2
;
}
message
RoomHeartbeatMessageRsp
{
uint32
status
=
1
;
}
// 获取房间内最后一次心跳
message
GetLastRoomHeartbeatMessage
{
uint64
uid
=
1
;
string
groupId
=
2
;
}
message
GetLastRoomHeartbeatMessageResp
{
int64
timestamp
=
1
;
}
service
Router
{
service
Router
{
rpc
route
(
RouteMessage
)
returns
(
RouteMessageRsp
)
{}
rpc
route
(
RouteMessage
)
returns
(
RouteMessageRsp
)
{}
rpc
kickUser
(
KickMessage
)
returns
(
KickMessageRsp
)
{}
rpc
kickUser
(
KickMessage
)
returns
(
KickMessageRsp
)
{}
...
@@ -96,4 +133,8 @@ service User {
...
@@ -96,4 +133,8 @@ service User {
rpc
multicast
(
MulticastMessage
)
returns
(
MulticastMessageRsp
)
{}
rpc
multicast
(
MulticastMessage
)
returns
(
MulticastMessageRsp
)
{}
rpc
broadcast
(
BroadcastMessage
)
returns
(
BroadcastMessageRsp
)
{}
rpc
broadcast
(
BroadcastMessage
)
returns
(
BroadcastMessageRsp
)
{}
rpc
transmit
(
BizMessage
)
returns
(
BizMessageRsp
)
{}
rpc
transmit
(
BizMessage
)
returns
(
BizMessageRsp
)
{}
rpc
enterRoom
(
EnterRoomMessage
)
returns
(
EnterRoomMessageRsp
)
{}
rpc
leaveRoom
(
LeaveRoomMessage
)
returns
(
LeaveRoomMessageRsp
)
{}
rpc
roomHeartbeat
(
RoomHeartbeatMessage
)
returns
(
RoomHeartbeatMessageRsp
)
{}
rpc
getLastRoomHeartbeat
(
GetLastRoomHeartbeatMessage
)
returns
(
GetLastRoomHeartbeatMessageResp
)
{}
}
}
\ No newline at end of file
protocol/userProxy.proto
View file @
7ed5bed8
...
@@ -412,3 +412,55 @@ message SvipUpgrade {
...
@@ -412,3 +412,55 @@ message SvipUpgrade {
uint32
svip_level
=
2
;
uint32
svip_level
=
2
;
string
group_id
=
3
;
string
group_id
=
3
;
}
}
/* id == 152 用户进房 上行 */
message
EnterRoom
{
string
group_id
=
1
;
}
/* id == 153 用户离房 上行 */
message
LeaveRoom
{
string
group_id
=
1
;
}
/* id == 154 房间心跳 上行 */
message
RoomHeartBeat
{
string
group_id
=
1
;
}
/* id == 155 麦位变化 下行 */
message
GroupMicChange
{
string
seqId
=
1
;
string
group_id
=
2
;
uint32
i
=
3
;
bool
lock
=
4
;
bool
forbid
=
5
;
bool
micForbid
=
6
;
string
externalId
=
7
;
uint32
agoraId
=
8
;
int64
timestamp
=
9
;
MicUserData
user
=
10
;
}
/* id == 156 麦位变化确认 上行 */
message
GroupMicChangeRsp
{
string
seqId
=
1
;
}
message
MicUserData
{
uint64
id
=
1
;
string
externalId
=
2
;
string
avatar
=
3
;
string
nick
=
4
;
uint32
sex
=
5
;
string
code
=
6
;
bool
isVip
=
7
;
uint32
noble
=
8
;
string
headwearPicUrl
=
9
;
string
headwearEffectUrl
=
10
;
string
headwearReverseEffectUrl
=
11
;
uint32
svipLevel
=
12
;
string
micEffect
=
14
;
string
headwearIcon
=
15
;
Svip
svip
=
16
;
}
\ 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