在AspNetCore中没有来自websocket的ping

时间:2018-05-20 22:31:42

标签: c# google-chrome asp.net-core websocket

我正在尝试实施asp.net核心的websocket,并且发现我无法让服务器ping客户端以确定任何时间间隔的活动状态。浏览器从不注册任何ping帧。

出于测试目的,我基本上复制了Microsoft的代码,所以我的代码就像在这个演示中一样: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/websockets?view=aspnetcore-2.0 这基本上意味着websocket的配置是:

        var webSocketOptions = new WebSocketOptions()
        {
            KeepAliveInterval = TimeSpan.FromSeconds(1),
            ReceiveBufferSize = 4 * 1024
        };
        app.UseWebSockets(webSocketOptions);

我尝试在IIS Express和本地IIS上进行部署。到目前为止,其他一切工作正常,所有数据帧都能很好地注册。为了监控我正在使用chrome的开发工具。

使用的版本 - AspNetCore.All(2.0.7) - > WebSockets(2.0.2)

我在这里做错了还是打破了api?

1 个答案:

答案 0 :(得分:1)

这里有一些学问:

  1. Chrome DevTools不会显示websocket ping frame
  2. 撰写本文时的KeepAliveInterval已损坏
  3. 要操作ping间隔,必须在IIS设置中执行此操作:

    <system.webServer>
       <webSocket
          enabled="true" 
          receiveBufferLimit="4194304"
          pingInterval="00:01:00">
       </webSocket>
    </system.webServer>
    

    参考文献:

    1. https://github.com/aspnet/Home/issues/2464#issuecomment-390683383
    2. https://docs.microsoft.com/en-us/iis/configuration/system.webserver/websocket