消息收发处理流程

1. 消息的结构:

2. 消息发送

a: 消息定义:  protocl/目录下/common一些通用的消息, /proto_cs 客户端服务器通讯消息, /proto_svr服务器之间通讯消息, 各自目录下应该是CMD定义和消息定义分属相应文件

b:消息封装与发送: 参看源码就好, 有类似CGameSvrPacketSendUtil这样的类提供发送接口

3. 消息的接收:

a: 接收消息的注册  一般先在类似CBattleSvrApp->InitProcessor里注册各个需要处理消息的模块,比如CLoginProcessor,处理登陆消息的,将此处理模块注册进去, 带上CMD参数

b: 消息接收流程: 距离enet, 进入CPacketDisp::ProcessENetPacket,根据type进入m_connEventHandlerImp.OnConnectionMessage

根据cmd找到对应的processor,就上a步骤注册的,进入pProcessor->ProcessClientPacket执行消息处理

时间: 2024-11-05 22:46:56

消息收发处理流程的相关文章

如何使用网络库实现应用级消息收发

网络客户端ISocketClient和网络会话ISocketSession都继承了ISocketRemoteISocketRemote表示远程通信,核心就是收发数据.下面是ISocketRemote接口的主要实现 /// <summary>远程通信Socket,仅具有收发功能</summary> public interface ISocketRemote : ISocket { #region 属性 /// <summary>远程地址</summary>

[Akka]发送一条消息的内部流程

本想通过了解一下Akka-actor工程中主要的类的概念,来看下Akka内部运作的机制.无奈里边的类的确太多,注释中对每个类的功能也没有足够的解释.所以还是通过debug的方式,找个入手点,看一下互相之间调用的关系. 最初的选择是看一下ActorSystem的实始化过程,但发现难度挺大,因为这个初始化工作是为以后的行为做准备,所以仅根据初始化的动作,难以了解其目的是什么.所以就试着从消息发送的过程了解起,发现这个逻辑更好理解. 下面来看一下其执行过程吧.代码如下,使用默认的配置. object

MQTT---HiveMQ源码详解(十二)Netty-MQTT消息、事件处理(流程)

简介 前面这些章节,讲的基本上都是属于netty对MQTT周边的一些处理,由于MQTT协议总共目前可用的消息类型有14个,如果再加上对应的事件处理加载一起那就估计大概有14*3个handler,如果每个来讲一遍,难免有些枯燥,而且知识点会很分散,思考再三,想把整体的MQTT消息以及对应的事件处理作为一节来介绍,我们只讲它整体的实现思路.处理流程即可,这样对需要自己写broker的朋友的帮助应该是非常大的,这也符合最初写此系列博客的初衷. 热身 一.Callback 1.分类 HiveMQ的Cal

ios 消息推送流程

iOS开发:推送通知简述及开发实践热度 1已有 706 次阅读 2013-10-15 09:23 |个人分类:经验之谈|系统分类:ios| IOS, 推送一.关于推送通知 推送通知,也被叫做远程通知,是在iOS 3.0以后被引入的功能.是当程序没有启动或不在前台运行时,告诉用户有新消息的一种途径,是从外部服务器发送到应用程序上的.一般说来,当要显示消息或下载数据的时候,通知是由远程服务器(程序的提供者)发送,然后通过苹果的推送通知服务(Apple Push Notification Servic

golang rabbitmq实践 (二 实现简单的消息收发)

1:驱动 本来打算自己写一个驱动的,后来发现github上面已经有了,那我就直接拿现成的了, 驱动采用 github.com/streadway/amqp ,直接import就可以啦! 2:exchange and queue 在上一篇文章中,我们已经创建好virtualhost .exchange and queue,所以我们先定义这些常量 const ( queueName = "push.msg.q" exchange = "t.msg.ex" mqurl =

Publisher/Subscriber(发布/订阅者)消息模式开发流程

该模式的作用是发布者和订阅者 可以相互发送消息 发布者和订阅者都充当 生产者和消费者 发布者 package publisher.to.subscriber; import java.awt.font.TextMeasurer; import javax.jms.Connection;import javax.jms.Destination; import javax.jms.JMSException;import javax.jms.MapMessage;import javax.jms.Me

Mina.Net实现的UDP协议消息收发Demo

using Mina.Filter.Codec; using Mina.Filter.Codec.TextLine; using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Text; using Mina.Core.Session; using System.Threading; namespace MinaDemo { class UDPMessageD

转: RabbitMQ实现中AMQP与MQTT消息收发异同

转自:http://www.cnblogs.com/lucifer1997/p/9438186.html 实现了AMQP与MQTT(至多一次)后,用多个队列以topic exchange的方式用相同交换机监听同一个主题(topic),发现情况存在不同,觉得有点意思,所以记录了下来. 用2个MQTT(分别记作A.B).2个AMQP(分别记作C.D)同时监听一个topic, 然后向这个topic先以MQTT的方式发送4条消息(分别记作1.2.3.4), 再以AMQP方式发送4条消息(分别记作5.6.

学习笔记_基于Sipdroid的SIP音视频电话SIP消息接收处理流程

RegisterAgent类 在TransactionClient Fail/Success的回调中, 调用RegisterAgentListener的Register Fail/Sucess接口 public class RegisterAgent implements TransactionClientListener, SubscriberDialogListener { RegisterAgentListener listener; public RegisterAgent(...Reg