Skip to content

Commit

Permalink
删除用户判断客户端地址是否一致
Browse files Browse the repository at this point in the history
  • Loading branch information
link1st committed Dec 2, 2019
1 parent 42219ba commit cec491b
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 6 deletions.
2 changes: 1 addition & 1 deletion main.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func initRedis() {

func open() {

time.Sleep(500 * time.Millisecond)
time.Sleep(1000 * time.Millisecond)

httpUrl := viper.GetString("app.httpUrl")
httpUrl = "http://" + httpUrl + "/home/index"
Expand Down
22 changes: 17 additions & 5 deletions servers/websocket/client_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -146,14 +146,22 @@ func (manager *ClientManager) AddUsers(key string, client *Client) {
}

// 删除用户
func (manager *ClientManager) DelUsers(key string) {
func (manager *ClientManager) DelUsers(client *Client) (result bool) {
manager.UserLock.Lock()
defer manager.UserLock.Unlock()

fmt.Println("DelUsers 4")
if _, ok := manager.Users[key]; ok {
key := GetUserKey(client.AppId, client.UserId)
if value, ok := manager.Users[key]; ok {
// 判断是否为相同的用户
if value.Addr != client.Addr {

return
}
delete(manager.Users, key)
result = true
}

return
}

// 获取用户的key
Expand Down Expand Up @@ -241,8 +249,12 @@ func (manager *ClientManager) EventUnregister(client *Client) {
manager.DelClients(client)

// 删除用户连接
userKey := GetUserKey(client.AppId, client.UserId)
manager.DelUsers(userKey)
deleteResult := manager.DelUsers(client)
if deleteResult == false {
// 不是当前连接的客户端

return
}

// 清除redis登录数据
userOnline, err := cache.GetUserOnlineInfo(client.GetKey())
Expand Down

0 comments on commit cec491b

Please sign in to comment.