【问题标题】:SignalR HubConnection closing instantly without errorSignalR HubConnection 立即关闭而没有错误
【发布时间】:2017-05-24 21:15:19
【问题描述】:

我正在尝试使用 .NET 中的 SignalR 制作一个既是客户端又是服务器的应用程序。最终目标是将它与我​​们现有的产品集成,这需要既是客户端又是服务器,因为一台计算机充当两者,而其他计算机都是客户端。

Full source code on GitHub.

在服务器启动代码完成后运行的客户端启动代码中,运行以下代码:

m_hubConnection = new HubConnection( "http://localhost:8080/" );
m_myHubProxy = m_hubConnection.CreateHubProxy( nameof( ServerHub ) );
m_myHubProxy.On<string, string>( nameof( ServerHub.BroadCastMessage ), ( name, message ) => OnMessageReceived( name, message ) );
m_hubConnection.Closed += OnClosed;
m_hubConnection.Error += OnErrorReceived;
await m_hubConnection.Start(new WebSocketTransport()); 
await SendMessage( "Startup", "Sending from same thread as connection established" );

几乎立即调用 OnClosed 回调,因此连接在启动时立即关闭。

OnErrorReceived 回调永远不会被调用,因此它不会因为任何明显的错误而关闭

Start 方法挂起并且从不回调

SendMessage 方法永远不会被命中


理想情况下,我希望连接打开,保持打开状态,点击 SendMessage,向 Hub 发送消息,然后将相同的消息广播回客户端。

对出了什么问题有任何想法吗?

【问题讨论】:

  • 如果将 URL 更改为 http://localhost:8080/signalr 会怎样?
  • 试一试,没有成功。 StartUp 配置映射到“/signalr”路径。还尝试将“/signalr”添加到服务器的字符串(两者一起),但没有任何组合起作用
  • 在您的浏览器网络选项卡中,您应该看到connect?transport=.....start?transport=.....。那些得到 200 个响应?在第二个请求的情况下,响应正文包含什么?您的服务器是否启用了 websockets? (如果你不使用浏览器来测试这个,你仍然可以使用 Fiddler 来拦截和检查请求/响应)
  • 应该澄清一下,我不是通过 ASP.NET 网页做的,它是一个控制台应用程序。我分叉了这个项目来尝试这个带有两个控制台应用程序的仓库,所以我试图将两个工作控制台应用程序合并为一个。所以浏览器的网络选项卡中没有信息。如果您想比较或查看,Here's the original 2 console programs workinghere's my merged not working version
  • 您仍然可以使用 fiddler 收集诊断信息。

标签: c# .net signalr signalr-hub signalr.client


【解决方案1】:

已修复,非常愚蠢的错误。我刚刚从端口 8080 切换到 8089。我猜其他东西正在使用端口 8080,但无论如何,将客户端和服务器端都切换到端口 8089 修复了它。

【讨论】:

    猜你喜欢
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    • 2018-08-09
    • 2012-09-21
    相关资源
    最近更新 更多