.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" />
私はここで答えを見つけました:
https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client
基本的に:
$.connection.hubs.start({ transport: 'longPolling' }, function() {
console.log('connection started!');
});
サーバー側でトランスポートを無効にするには、次のようなものを使用する必要があります。
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のソリューションは、クライアントでそれを無効にするだけですが、クライアントはトランスポートを再度有効にして接続することができます。
乾杯。