2012-04-03 6 views
13

.NET 4.5로 업그레이드 했으므로 이제 WebSocket Server가없는 Windows 7에서만 SignalR이 Firefox/Chrome에서 WebSocket을 사용하려고합니다.SignalR - 웹 소켓을 비활성화하려면 어떻게합니까?

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

가 어떻게 WebSocket을 잊고 롱 폴링을 사용하는 SignalR을 강요하는 걸까, 또는 내가 부족 Windows 7 용 WebSocket을을 설정하는 방법이 있습니다 :

요청은 분명히 실패?

업데이트 .... 내가 SignalR 0.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" /> 

답변

25

을 여기 해답을 발견

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

기본적으로

:

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

SignalR 0.4로 업데이트하면 서버에서 지원하는 경우에만 웹 소켓을 시도합니다. – davidfowl

+0

SignalR 0.4를 사용하고 있습니다. (위의 업데이트 참조) – reach4thelasers

+0

.NETFramework 4.5를 사용 중이라면 지금 당장은 그것을 감지 할 수있는 좋은 방법이 없으므로 항상 웹 소켓을 사용하려고합니다. – davidfowl

8

위해에 서버 측에서 전송을 비활성화하려면 다음과 같이 사용해야합니다 :

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 솔루션은 클라이언트에서 해당 기능을 비활성화하지만 클라이언트는 전송 기능을 다시 활성화하고 연결할 수 있습니다.

건배.

관련 문제