增加自定义不是房间的消息发送

This commit is contained in:
2026-05-18 23:31:04 +08:00
parent ce9b1e85e9
commit 3daebf56ab
29 changed files with 2375 additions and 356 deletions

View File

@@ -0,0 +1,85 @@
// Assets/Script/WebRtc/SignalingMessageHelper.cs
using System;
using System.Reflection;
using UnityEngine;
namespace Unity.RenderStreaming
{
public static class SignalingMessageHelper
{
private static object _webSocketSignaling;
private static MethodInfo _sendRawMessageMethod;
static SignalingMessageHelper()
{
Initialize();
}
private static void Initialize()
{
try
{
var signalingManager = GameObject.FindObjectOfType<SignalingManager>();
if (signalingManager == null)
{
Debug.LogWarning("SignalingMessageHelper: 找不到 SignalingManager");
return;
}
var managerInternalField = typeof(SignalingManager).GetField("m_instance",
BindingFlags.NonPublic | BindingFlags.Instance);
var managerInternal = managerInternalField.GetValue(signalingManager);
if (managerInternal == null)
{
Debug.LogWarning("SignalingMessageHelper: SignalingManager 内部实例为空");
return;
}
var signalingField = managerInternal.GetType().GetField("_signaling",
BindingFlags.NonPublic | BindingFlags.Instance);
_webSocketSignaling = signalingField.GetValue(managerInternal);
if (_webSocketSignaling == null)
{
Debug.LogWarning("SignalingMessageHelper: WebSocketSignaling 实例为空");
return;
}
_sendRawMessageMethod = _webSocketSignaling.GetType().GetMethod("SendMessage");
if (_sendRawMessageMethod == null) Debug.LogWarning("SignalingMessageHelper: 找不到 SendRawMessage 方法");
}
catch (Exception e)
{
Debug.LogError($"SignalingMessageHelper 初始化失败: {e.Message}");
}
}
public static bool SendMessage(string message)
{
if (_webSocketSignaling == null || _sendRawMessageMethod == null)
{
Debug.LogError("SignalingMessageHelper 未正确初始化,请确保 WebSocketSignaling 已启动");
return false;
}
try
{
_sendRawMessageMethod.Invoke(_webSocketSignaling, new[] { message });
Debug.Log("消息已发送到服务端");
return true;
}
catch (Exception e)
{
Debug.LogError($"发送消息失败: {e.Message}");
return false;
}
}
public static bool IsReady()
{
return _webSocketSignaling != null && _sendRawMessageMethod != null;
}
}
}