/// <summary> /// rpc 调用 没有经过测试 为什么不用async修饰 因为加或者不加都可以 /// 如果方法中需要await 等待的那么必须用async修饰 否则只需要在调用的那个方法里加 /// 说明 await 和 async 是成对出现的 /// </summary> /// <param name="messageType"></param> /// <param name="msg"></param> /// <returns></returns> public UniTask <byte[]> Call(int opcode, byte[] msg) { try { UniTaskCompletionSource <byte[]> taskCompletion = null; int rpcID = IDGenerator.GetRpcId(); if (!completionCache.TryGetValue(rpcID, out taskCompletion)) { taskCompletion = new UniTaskCompletionSource <byte[]>(); completionCache.Add(rpcID, taskCompletion); } socket.Send(opcode, rpcID, msg); return(taskCompletion.Task); } catch (Exception e) { Debug.LogError(e); throw; } }
/// <summary> /// 同步发送消息 /// </summary> /// <param name="messageType"></param> /// <param name="msg"></param> public void SendMessage(int opcode, byte[] msg) { socket.Send(opcode, IDGenerator.GetRpcId(), msg); }