您的位置:首页 > 汽车 > 时评 > 厦门网站设计公司排名_华辰合肥企业展厅设计公司_关键词林俊杰_网络推广员是什么

厦门网站设计公司排名_华辰合肥企业展厅设计公司_关键词林俊杰_网络推广员是什么

2025/4/19 6:48:41 来源:https://blog.csdn.net/wskongdesheng/article/details/147089974  浏览:    关键词:厦门网站设计公司排名_华辰合肥企业展厅设计公司_关键词林俊杰_网络推广员是什么
厦门网站设计公司排名_华辰合肥企业展厅设计公司_关键词林俊杰_网络推广员是什么

接下来,我们再来开发一个功能,这个功能相对简单,就是聊天。在游戏里,我们会收到一个聊天请求,我们只需要做一个聊天推送即可。具体来说,就是谁发的消息,就推送给所有人,包括消息内容等信息。

为了实现这个功能,我们需要在合适的位置进行消息搜索。首先,我们要把消息搜出来。在搜索时,我们会参考笔记里的一些信息,比如 idtype(消息类型,不同发消息的情况会有不同的类型)、message(消息内容)以及收件人 ID(如果要发送给指定用户)。不过,我们这种消息一般是广播,发送给所有用户,所以通常都会成功。

有了这些信息后,我们对其进行解析,并返回结果。如果 type 等于聊天通知,我们就进入聊天相关流程,把用户 ID 等信息传递过去。之后,我们把消息原模原样地进行数据发送,即 send data。在发送过程中,我们会涉及聊天形式的编写等操作,最终实现消息发送。

具体代码如下:

func (g *GameFrame) onGameChat(user *proto.RoomUser, session *remote.Session, data MessageData) {g.sendDataAll(GameChatPushData(user.ChairID, data.Type, data.Msg, data.RecipientID), session)
}func (r *Room) SendDataAll(msg *stream.Msg, data any) {users := make([]stream.PushUser, 0)for _, v := range r.users {users = append(users, stream.PushUser{Uid:         v.UserInfo.Uid,ConnectorId: v.UserInfo.FrontendId,})}r.ServerMessagePush(msg, users, data)
}func (r *Room) ServerMessagePush(msg *stream.Msg, users []stream.PushUser, data any) {pusher.GetPusher().Push(msg, users, data, "ServerMessagePush")
}func (p *Pusher) Push(m *stream.Msg, users []stream.PushUser, data any, router string) {msgData, _ := json.Marshal(data)pm := stream.PushData{Data:   msgData,Router: router,}upm := &stream.PushMessage{Users:    users,PushData: pm,Msg:      m,}p.pushChan <- upm
}

在实现后,我们重新启动程序,在相应位置创建房间并加入房间(如 411126),然后发送消息,比如“快点吧”。可以看到,消息成功发出且其他人也能收到,相当于所有人都能看到这条消息。这就是一个简单的聊天功能实现。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com