增加自定义不是房间的消息发送
This commit is contained in:
85
Assets/Script/WebRtc/SignalingMessageHelper.cs
Normal file
85
Assets/Script/WebRtc/SignalingMessageHelper.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user