我可以在服务结构服务中使用两种不同类型的监听器吗?

时间:2017-03-02 10:00:03

标签: azure-service-fabric

我有一个无状态服务,我正在使用它作为websocket服务器。为此我使用ICommunicationListener。此外,我想使用ServiceProxy调用此服务的方法。所以我正在使用ServiceRemotingListener。

internal sealed class Stateless : StatelessService, ICommunicationListener, IStatelessServiceInterface
{        
    public Stateless(StatelessServiceContext context)
        : base(context){ }      

    protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
    {           
        return new List<ServiceInstanceListener>()
        {
            new ServiceInstanceListener((context) =>this.CreateServiceRemotingListener(context)),
            new ServiceInstanceListener(_ => this)
        };
    }.....

因此当我同时使用监听器时,在诊断事件中运行应用程序后,我收到消息:socket将关闭。所以websocket无效。

所以我想知道我可以一起使用两种类型的监听器吗?或者我的问题有解决办法吗?

1 个答案:

答案 0 :(得分:-1)

这是我的OpenAsync:

public Task<string> OpenAsync(CancellationToken cancellationToken)
{
        EndpointResourceDescription serviceEndpoint = this.serviceContext.CodePackageActivationContext.GetEndpoint("ServiceEndpoint");
        int port = serviceEndpoint.Port;
        this.listeningAddress = string.Format(CultureInfo.InvariantCulture, "http://+:{0}/{1}{2}", port, this.appRoot, this.webSocketRoot);
        this.publishAddress = this.listeningAddress.Replace("+", FabricRuntime.GetNodeContext().IPAddressOrFQDN);

        this.Start();
        return Task.FromResult(this.publishAddress);
    }