节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
1.43 KiB
Stardust
using System.Threading;
using System.Threading.Tasks;
using NewLife;
using NewLife.Log;
using StarGateway.Proxy;
using Stardust;

namespace StarGateway;

class MyService : IHostedService
{
    private HttpReverseProxy _proxy;

    public Task StartAsync(CancellationToken cancellationToken)
    {
        var set = StarGatewaySetting.Current;

        // 使用配置的端口,默认8800(与 Setting.cs 默认值一致)
        var port = set.Port > 0 ? set.Port : 8800;

        // 从 StarFactory 获取 Tracer 和 StarServer 地址
        var star = Program.Star;
        var tracer = star?.Tracer ?? DefaultTracer.Instance;
        var serverUrl = star?.Server ?? set.StarServer ?? "http://star.newlifex.com";

        var proxy = new HttpReverseProxy
        {
            Port = port,
            RemoteServer = serverUrl,

            Tracer = tracer,
            Log = XTrace.Log,
        };

        if (set.Debug) proxy.SessionLog = XTrace.Log;
#if DEBUG
        proxy.SocketLog = XTrace.Log;
        proxy.LogSend = true;
        proxy.LogReceive = true;
#endif

        proxy.AdminLog = XTrace.Log;

        proxy.Start();

        _proxy = proxy;

        XTrace.WriteLine("StarGateway 已启动,监听端口 {0},远程服务器 {1}", port, serverUrl);

        return Task.CompletedTask;
    }

    public Task StopAsync(CancellationToken cancellationToken)
    {
        _proxy.TryDispose();

        return Task.CompletedTask;
    }
}