web-dev-qa-db-ja.com

SignalR-WebSocketを無効にするにはどうすればよいですか

.NET 4.5にアップグレードしましたが、今ではSignalRはFirefox/ChromeでWebSocketを使用することに固執しているようです。

リクエストは明らかに失敗します:

Firefox can't establish a connection to the server at ws://www.site.local/signalr?connectionData=

SignalRにWebsocketを忘れさせてロングポーリングを使用させるにはどうすればよいですか、または不足しているWindows 7用のWebsocketを設定する方法はありますか?

更新....私はSignalR0.4を使用しています:

  <package id="SignalR" version="0.4.0" />
  <package id="SignalR.Hosting.AspNet" version="0.4.0.0" />
  <package id="SignalR.Js" version="0.4.0.1" />
  <package id="SignalR.Server" version="0.4.0.0" />
  <package id="SignalR.StructureMap" version="0.4.1" />
16
reach4thelasers

私はここで答えを見つけました:

https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client

基本的に:

$.connection.hubs.start({ transport: 'longPolling' }, function() {
    console.log('connection started!');
});
31
reach4thelasers

サーバー側でトランスポートを無効にするには、次のようなものを使用する必要があります。

using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Transports;
using Owin;
namespace MyApplication
{
    public static class Startup
    {
        public static void ConfigureSignalR(IAppBuilder app)
        {
            // If using the global dependency resolver
            TurnOfForeverFrame(GlobalHost.DependencyResolver);
            app.MapSignalR();
        }
        public static void TurnOfForeverFrame(IDependencyResolver resolver)
        {
            var transportManager = resolver.Resolve<ITransportManager>() as TransportManager;
            transportManager.Remove("foreverFrame");
        }
    }
}

@ Reach4thelasersのソリューションは、クライアントでそれを無効にするだけですが、クライアントはトランスポートを再度有効にして接続することができます。

乾杯。

9
vtortola