|
|
|
|
@ -9,11 +9,15 @@ import (
|
|
|
|
|
"github.com/zishang520/socket.io/v2/socket"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[string]any) []byte {
|
|
|
|
|
func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[string]any) *entities.ResponseMessage {
|
|
|
|
|
cliMsg := &entities.ClientJoinMessage{}
|
|
|
|
|
if err := utils.MapToStructViaJSON(msg, cliMsg); err != nil {
|
|
|
|
|
logrus.WithError(err).Errorf("invalid data type: %+v", msg)
|
|
|
|
|
return nil
|
|
|
|
|
return &entities.ResponseMessage{
|
|
|
|
|
Code: 400,
|
|
|
|
|
Message: "invalid data type",
|
|
|
|
|
Data: nil,
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
room := session.Room
|
|
|
|
|
@ -35,7 +39,7 @@ func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[s
|
|
|
|
|
|
|
|
|
|
var newUser entities.User = &entities.UserImpl{}
|
|
|
|
|
|
|
|
|
|
//首先判断当前用户是否想要加入已有的房间,如果房间不存在则新建房间
|
|
|
|
|
//首先判断当前用户是否加入已有的房间,如果房间不存在则新建房间
|
|
|
|
|
newUser.SetID(userID)
|
|
|
|
|
newUser.SetSocket(client)
|
|
|
|
|
newUser.SetUsername(username)
|
|
|
|
|
@ -52,12 +56,10 @@ func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[s
|
|
|
|
|
if cliMsg.Password != "" {
|
|
|
|
|
if cliMsg.Password != conf.ServerSetting.HostPassword {
|
|
|
|
|
logrus.Warnf("user [%s] join room [%s] failed: incorrect password", userID, room)
|
|
|
|
|
newUser.Send(entities.MessageTypeMessage, entities.ServerNotificationMessage{
|
|
|
|
|
Severity: "error",
|
|
|
|
|
Message: "密码错误",
|
|
|
|
|
Title: "",
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
return &entities.ResponseMessage{
|
|
|
|
|
Code: 403,
|
|
|
|
|
Message: "密码错误",
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 如果密码正确,则设置为管理员
|
|
|
|
|
@ -73,12 +75,10 @@ func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[s
|
|
|
|
|
// 创建房间时,检测密码
|
|
|
|
|
if cliMsg.Password != conf.ServerSetting.HostPassword {
|
|
|
|
|
logrus.Warnf("user [%s] join room [%s] failed: incorrect password", userID, room)
|
|
|
|
|
newUser.Send(entities.MessageTypeMessage, entities.ServerNotificationMessage{
|
|
|
|
|
Severity: "error",
|
|
|
|
|
Message: "密码错误",
|
|
|
|
|
Title: "",
|
|
|
|
|
})
|
|
|
|
|
return nil
|
|
|
|
|
return &entities.ResponseMessage{
|
|
|
|
|
Code: 403,
|
|
|
|
|
Message: "密码错误",
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
newUser.SetAdmin(true) // 设置为管理员
|
|
|
|
|
@ -93,15 +93,6 @@ func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[s
|
|
|
|
|
clientData.IsAdmin = newUser.IsAdmin()
|
|
|
|
|
client.SetData(clientData)
|
|
|
|
|
|
|
|
|
|
newUser.Send("joined", entities.UserJoinLeaveMessage{
|
|
|
|
|
Type: "joined",
|
|
|
|
|
UserInfo: entities.UserStatus{
|
|
|
|
|
UserID: userID,
|
|
|
|
|
UserName: username,
|
|
|
|
|
IsAdmin: newUser.IsAdmin(),
|
|
|
|
|
},
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
joinedRoom.Broadcast(entities.MessageTypeUserJoin, entities.UserJoinLeaveMessage{
|
|
|
|
|
Type: entities.MessageTypeUserJoin,
|
|
|
|
|
UserInfo: entities.UserStatus{
|
|
|
|
|
@ -115,7 +106,16 @@ func JoinEndpoint(client *socket.Socket, session *entities.ClientData, msg map[s
|
|
|
|
|
joinedRoom.BroadcastRoomState()
|
|
|
|
|
|
|
|
|
|
logrus.Infof("user [%s] join room [%s] success", userID, room)
|
|
|
|
|
return nil
|
|
|
|
|
|
|
|
|
|
return &entities.ResponseMessage{
|
|
|
|
|
Code: 200,
|
|
|
|
|
Message: "success",
|
|
|
|
|
Data: entities.UserStatus{
|
|
|
|
|
UserID: userID,
|
|
|
|
|
UserName: username,
|
|
|
|
|
IsAdmin: newUser.IsAdmin(),
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func JoinRecovered(client *socket.Socket) {
|
|
|
|
|
|