【问题标题】:SignalR only sending messages sporadically on azureSignalR 仅在 azure 上偶尔发送消息
【发布时间】:2018-10-07 11:18:11
【问题描述】:

我有一个小型 React Web 应用程序,它从 azure 移动应用程序后端接收数据。后端是使用 C# 的 ApiController 的简单 REST API。客户端应被告知其他客户端在后端所做的特定更改。因此我使用信号器。开发时在 localhost 上运行一切正常,并且所有消息都正确发送。将后端部署到 azure 会导致仅发送一些消息。没有特定类型的消息,应该每 3-6 次发送一次。

一些 sn-ps - 我如何尝试:

保持简单:

集线器的样子:

public class PostHub : Hub {}

它的注册如下(允许cors)

app.Map("/signalr", map =>
{
    map.UseCors(new CorsOptions
    {
        PolicyProvider = new CorsPolicyProvider
        {
            PolicyResolver = context =>
            {
                var policy = new CorsPolicy();
                policy.Origins.Add("*");
                policy.AllowAnyMethod = true;
                policy.AllowAnyHeader = true;
                policy.SupportsCredentials = true;
                return Task.FromResult(policy);
            }
        }
    });
    var hubConfig = new HubConfiguration { };
    map.RunSignalR(hubConfig);
});

从控制器方法中发送消息看起来像(简化):

pubic async Task<IHttpActionResult> ChangeSomething(string id)
{
    ... update some data in the back-end if allowed and so on...

    // result = changed data from the back-end having an Id property.

    IHubContext context = GlobalHost.ConnectionManager.GetHubContext<PostHub>();
    context.Clients.All.InformToUpdateDataFor(result.Id);

    return Ok(result);
}

客户端 (js) 使用 npm 包 signalr 版本 2.3.0。正如已经提到的,它似乎可以正确接收消息(如果它们已发送;)

可能是什么问题?我在这里读到了一些其他类似的问题,但它们似乎有所不同,因为何时发送消息以及何时发送消息并不是真正的确定性。

【问题讨论】:

    标签: javascript c# reactjs azure signalr


    【解决方案1】:

    我要责备自己……

    我在玩网络应用的水平缩放。所以我配置有 x 个实例。我忘记了我增加了实例数并且我没有设置 signalR 来使用服务总线。这导致了问题,Web 应用程序的特定实例不知道其他实例的连接,因此我只得到零星的响应......

    如果其他人有这个问题,只需设置一个服务总线并告诉 signalR 使用它...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多