当前位置: 首页>>代码示例>>Golang>>正文


Golang Session.Send方法代码示例

本文整理汇总了Golang中libnet.Session.Send方法的典型用法代码示例。如果您正苦于以下问题:Golang Session.Send方法的具体用法?Golang Session.Send怎么用?Golang Session.Send使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在libnet.Session的用法示例。


在下文中一共展示了Session.Send方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: DoHeartBeat

func (this *WorldServer) DoHeartBeat(session *libnet.Session) {
	//发送心跳响应信息
	heartMsg := msgcmd.NewCmd(msgcmd.MCMD_W2M_HEARTBEAT)
	if err := session.Send(heartMsg); err != nil {
		println("World Server Error: 响应 MsgServer 心跳信息 失败. ")
		logFile.Printf("World Server Error: 响应 MsgServer 心跳信息 失败. ")
		return
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:9,代码来源:worldserver_proc.go

示例2: HandleKeyClient

func (this *WorldServer) HandleKeyClient(session *libnet.Session) {
	defer waitgroup.Done()
	defer session.Close()
	//Msg Server 连接 WS 的 Key Server 后,WS 发送 RC4 秘钥给 Msg Server
	cmd := msgcmd.NewCmd(msgcmd.MCMD_RESPONSERC4KEY)
	cmd.AddArg(this.cfg.Rc4Key)
	if err := session.Send(cmd); err != nil {
		println("World Server Error: 发送 RC4 Key 失败. ", err.Error())
		logFile.Printf("World Server Error: 发送 RC4 Key 失败. ", err.Error())
		return
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:12,代码来源:worldserver_proc.go

示例3: HandleKeyClient

func (this *MsgServer) HandleKeyClient(session *libnet.Session) {
	defer waitgroup.Done()
	defer session.Close()
	//Client 连接 Msg Key Server 后, 发送 RC4 秘钥给 Client
	cmd := msgcmd.NewCmd(msgcmd.MCMD_RESPONSERC4KEY)
	cmd.AddArg(this.customCodec.GetKey())
	if err := session.Send(cmd); err != nil {
		println("Msg Key Server Error: 发送 RC4 Key 失败. ", err.Error())
		logFile.Printf("Msg Key Server Error: 发送 RC4 Key 失败. ", err.Error())
		return
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:12,代码来源:msgserver_proc.go

示例4: DoRequestOnlineUsers

func (this *WorldServer) DoRequestOnlineUsers(msg *msgcmd.Cmd, session *libnet.Session) {
	resMsg := msgcmd.NewCmd(msgcmd.MCMD_W2M_RESPONSE_ONLINEUSERS)
	resMsg.AddArg(msg.Args[0]) //发起这个请求的用户的用户名
	userlist := usermap.CopyData()
	for _, value := range userlist {
		if user, ok := value.(*common.UserInfo); ok {
			if user.State == 1 {
				resMsg.AddArg(user.Name)
			}
		}
	}
	if err := session.Send(resMsg); err != nil {
		println("World Server Error: 发送 在线用户列表信息 失败. ")
		logFile.Printf("World Server Error: 发送 在线用户列表信息 失败. ")
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:16,代码来源:worldserver_proc.go

示例5: HandleClient

func (this *Gateway) HandleClient(session *libnet.Session, index uint) {
	defer waitgroup.Done()
	defer session.Close()

	var serverAddr string = this.cfg.MsgServerList[index]
	var keyAddr string = getKeyServerAddr(serverAddr)

	//主动应答 MS Server Addr 和 Key Server Addr 给 Client
	cmd := msgcmd.NewCmd(msgcmd.MCMD_G2C_RESPONSEMSADDR)
	cmd.AddArg(serverAddr)
	cmd.AddArg(keyAddr)
	if err := session.Send(cmd); err != nil {
		println("GateWay Error: 发送Msg Server 地址信息失败. ", err.Error())
		logFile.Printf("GateWay Error: 发送Msg Server 地址信息失败. %s", err.Error())
		return
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:17,代码来源:gateway_proc.go

示例6: DoRegister

func (this *WorldServer) DoRegister(msg *msgcmd.Cmd, session *libnet.Session) {
	resmsg := msgcmd.NewCmd(msgcmd.MCMD_W2M_REGISTER)
	resmsg.AddArg(msg.Args[2]) //在返回的消息中,附上传入的临时用户名
	//查找是否已经存在该用户名
	row := this.database.QueryData(`SELECT * FROM users WHERE name=?`, msg.Args[0])
	var userinfo *common.UserInfo = common.NewUserInfo(session)
	if err := row.Scan(&userinfo.ID, &userinfo.Name, &userinfo.Pwd, &userinfo.RegDate); err == sql.ErrNoRows {
		//可注册该用户名
		userinfo.RegDate = time.Now()
		err = this.database.InsertData(`INSERT users (name,pwd,regdate) values (?,?,?)`, msg.Args[0], msg.Args[1], userinfo.RegDate)
		if err != nil {
			//插入数据失败,返回提示信息
			println("World Server Error: 写入注册信息 失败. ", err.Error())
			logFile.Printf("World Server Error: 写入注册信息 失败. ", err.Error())

			resmsg.AddArg("0")
			resmsg.AddArg("注册用户时发生异常,请稍后再试。")
			if err = session.Send(resmsg); err != nil {
				println("World Server Error: 发送注册回馈信息 失败. ", err.Error())
				logFile.Printf("World Server Error: 发送注册回馈信息 失败. ", err.Error())
				return
			}
		} else {
			resmsg.AddArg("1")
			resmsg.AddArg("注册用户成功,试试登陆吧。")
			if err = session.Send(resmsg); err != nil {
				println("World Server Error: 发送注册回馈信息 失败. ", err.Error())
				logFile.Printf("World Server Error: 发送注册回馈信息 失败. ", err.Error())
				return
			}
		}
	} else {
		//不可注册该用户名
		resmsg.AddArg("0")
		resmsg.AddArg("该用户名已被抢先1秒注册,换个试试吧。")
		if err = session.Send(resmsg); err != nil {
			println("World Server Error: 发送注册回馈信息 失败. ", err.Error())
			logFile.Printf("World Server Error: 发送注册回馈信息 失败. ", err.Error())
			return
		}
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:42,代码来源:worldserver_proc.go

示例7: DoLogin

func (this *WorldServer) DoLogin(msg *msgcmd.Cmd, session *libnet.Session) {
	resmsg := msgcmd.NewCmd(msgcmd.MCMD_W2M_LOGIN)
	resmsg.AddArg(msg.Args[2])

	var userinfo *common.UserInfo
	var isInUserMap = false
	var result bool

	if user, ok := usermap.Find(msg.Args[0]); ok {
		if userinfo, result = user.(*common.UserInfo); !result {
			println("World Server Error: (*common.UserInfo) 类型断言 失败. ")
			logFile.Printf("World Server Error: (*common.UserInfo) 类型断言 失败. ")
			return
		}
		isInUserMap = true
	} else {
		//查找是否已经存在该用户名
		row := this.database.QueryData(`SELECT * FROM users WHERE name=?`, msg.Args[0])

		userinfo = common.NewUserInfo(session)
		if err := row.Scan(&userinfo.ID, &userinfo.Name, &userinfo.Pwd, &userinfo.RegDate); err == sql.ErrNoRows {
			//登陆失败,没有该用户信息
			resmsg.AddArg("0")
			if err = session.Send(resmsg); err != nil {
				println("World Server Error: 发送登陆回馈信息 失败. ", err.Error())
				logFile.Printf("World Server Error: 发送登陆回馈信息 失败. ", err.Error())
				return
			}
		}
	}
	//找到该用户数据,开始验证密码信息
	if userinfo.Name == msg.Args[0] && userinfo.Pwd == msg.Args[1] {
		//登陆成功
		resmsg.AddArg("1")
		resmsg.AddArg(userinfo.GetIDbyString())
		resmsg.AddArg(userinfo.Name)
		if err := session.Send(resmsg); err != nil {
			println("World Server Error: 发送登陆回馈信息 失败. ", err.Error())
			logFile.Printf("World Server Error: 发送登陆回馈信息 失败. ", err.Error())
			return
		}
		userinfo.State = 1

	} else {
		//登陆失败
		resmsg.AddArg("0")
		if err := session.Send(resmsg); err != nil {
			println("World Server Error: 发送登陆回馈信息 失败. ", err.Error())
			logFile.Printf("World Server Error: 发送登陆回馈信息 失败. ", err.Error())
			return
		}
		userinfo.State = 0
	}

	if userinfo.State == 1 {
		//有用户上线,广播所有用户
		bcMsg := msgcmd.NewCmd(msgcmd.MCMD_W2M_BROADCAST)
		bcMsg.AddArg(msgcmd.IntToString(msgcmd.ECMD_BROADCAST_USERLOGIN))
		bcMsg.AddArg(userinfo.Name)
		this.Broadcast(bcMsg)
	}
	//保存当前用户所在的MS会话地址
	userinfo.Session = session
	//添加到usermap中
	if !isInUserMap {
		usermap.Insert(userinfo.Name, userinfo)
	}
}
开发者ID:cmbug,项目名称:flashchat,代码行数:68,代码来源:worldserver_proc.go


注:本文中的libnet.Session.Send方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。