【问题标题】:How to use ASP.NET Core SignalR with Pace.js如何将 ASP.NET Core SignalR 与 Pace.js 一起使用
【发布时间】:2019-02-19 16:00:10
【问题描述】:

我有一个启用 HTTPS 并以 Docker Linux 容器为目标的 ASP.NET Core 2.2 MVC 项目。我已按照https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio 的所有说明在我的项目中启用 SignalR。

当项目运行时,我看到以下与 SignalR 相关的日志条目:

[2019-02-19T15:20:14.395Z] Information: Normalizing '/mainHub' to 'https://localhost:44392/mainHub'. Utils.ts:185:30

[2019-02-19T15:20:14.858Z] Information: WebSocket connected to wss://localhost:44392/mainHub?id=3RS_UsO7L20SQHgW4meRpQ. Utils.ts:185:30

WebSocket is not in the OPEN state insys-signalr-location.min.js:1:426

[2019-02-19T15:33:41.840Z] Error: Connection disconnected with error 'Error: WebSocket closed with status code: 1006 ().'. Utils.ts:179:21

Error: WebSocket closed with status code: 1006 (). WebSocketTransport.ts:130:16

要使用 SignalR 和 pace.js,我需要做些什么特别的事情吗?

编辑

最初我认为这是 Docker 的问题。在确定与 pace.js 的冲突后,我重新构建了问题。

【问题讨论】:

  • 我有一位同事从事过一个类似的项目,该项目使用 SignalR 和 Docker / .Net Core。它确实有效,恐怕我还没有看到这个具体问题,如果没有更多细节很难诊断。
  • 我想知道你的同事是否愿意为他们的一个项目分享一个示例 DockerFile。我是 Docker 的新手。我不确定这是 Docker 配置问题,但我怀疑是在这一点上。
  • 害怕它都是封闭源代码 :(。如果你在 Docker 容器之外调试它,你的代码能工作吗?如果是这样,我强烈怀疑这与你的 docker 网络/端口有关。最简单的开始方式这是将 docker 端口映射到您的本地主机以让它们进行通信。请参阅medium.freecodecamp.org/…
  • 您是否在 Dockerfile 中公开了所需的端口?
  • 443 和 80 在 Dockerfile 中公开。还有其他端口应该暴露吗?

标签: c# asp.net-core-mvc asp.net-core-signalr


【解决方案1】:

原来这是与pace.js 的冲突。在加载pace.js之前运行以下脚本解决了这个问题:

<script>
    window.paceOptions = { ajax: { ignoreURLs: ['mainHub', '__browserLink', 'browserLinkSignalR'], trackWebSockets: false } }
</script>

【讨论】:

    猜你喜欢
    • 2011-11-27
    • 1970-01-01
    • 2019-11-02
    • 2019-11-15
    • 1970-01-01
    • 2019-10-07
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    相关资源
    最近更新 更多