Skip to content

Commit b6cc0ac

Browse files
committed
fix(ServiceClient): 修复消息发送时未设置MessageId的问题
在Send和Call方法中添加对MessageId为默认值的检查,自动设置MessageId以避免潜在的消息处理错误
1 parent 96a893e commit b6cc0ac

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

GameFrameX.StartUp/ServiceClient/GameAppServiceClient.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ private async Task Handler()
153153

154154
if (sessionData != null)
155155
{
156-
MessageSendHandle(sessionData?.RequestMessage);
156+
MessageSendHandle(sessionData.RequestMessage);
157157
}
158158
else
159159
{
@@ -252,6 +252,11 @@ private void SendHeartBeat()
252252
/// <exception cref="ArgumentOutOfRangeException">Thrown when messageObject.MessageId is greater than or equal to 0 / 当messageObject.MessageId大于等于0时抛出</exception>
253253
public void Send(MessageObject messageObject)
254254
{
255+
if (messageObject.MessageId == default)
256+
{
257+
MessageProtoHelper.SetMessageId(messageObject);
258+
}
259+
255260
if (messageObject.MessageId >= 0)
256261
{
257262
throw new ArgumentOutOfRangeException(nameof(messageObject), "messageObject.MessageId must be less than 0");
@@ -289,6 +294,11 @@ private void MessageSendHandle(INetworkMessage messageObject)
289294
/// <exception cref="ArgumentOutOfRangeException">Thrown when messageObject.MessageId is greater than or equal to 0 / 当messageObject.MessageId大于等于0时抛出</exception>
290295
public Task<IRpcResult> Call<T>(MessageObject messageObject, int timeOut = 10000) where T : IResponseMessage, new()
291296
{
297+
if (messageObject.MessageId == default)
298+
{
299+
MessageProtoHelper.SetMessageId(messageObject);
300+
}
301+
292302
if (messageObject.MessageId >= 0)
293303
{
294304
throw new ArgumentOutOfRangeException(nameof(messageObject), "messageObject.MessageId must be less than 0");

0 commit comments

Comments
 (0)