Files
linker/cmonitor/plugins/viewer/proxy/ViewerProxyServer.cs
snltty 035a4a1b0c IPV6
2024-04-21 08:56:46 +08:00

42 lines
1.4 KiB
C#

using cmonitor.config;
using cmonitor.plugins.viewer.messenger;
using cmonitor.server;
using common.libs;
using MemoryPack;
namespace cmonitor.plugins.viewer.proxy
{
public sealed class ViewerProxyServer : ViewerProxy
{
private readonly MessengerSender messengerSender;
private readonly ViewerProxyCaching viewerProxyCaching;
public ViewerProxyServer(MessengerSender messengerSender, Config config, ViewerProxyCaching viewerProxyCaching)
{
this.messengerSender = messengerSender;
this.viewerProxyCaching = viewerProxyCaching;
Start(config.Data.Server.Viewer.ProxyPort);
Logger.Instance.Info($"start viewer proxy, port : {LocalEndpoint.Port}");
}
public override async Task Connect(string name, uint connectId)
{
if (viewerProxyCaching.Get(name, out IConnection connection))
{
await messengerSender.SendOnly(new MessageRequestWrap
{
Connection = connection,
MessengerId = (ushort)ViewerMessengerIds.ProxyFromServer,
Payload = MemoryPackSerializer.Serialize(new ViewerProxyInfo
{
ConnectId = connectId,
ProxyEP = null,
ViewerMachine = string.Empty
})
});
}
}
}
}