2012-04-03 36 views
13

Actualicé a .NET 4.5, ahora SignalR parece insistente en el uso de WebSockets en Firefox/Chrome, aunque solo estoy en Windows 7 que no tiene un servidor WebSocket.SignalR - Cómo desactivo WebSockets

La solicitud obviamente falla:

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

¿Cómo fuerzo SignalR olvidarse de WebSockets y utilizar sondeo largo, o hay una manera de establecer WebSockets para Windows 7 que me falta?

actualización .... estoy usando 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" /> 

Respuesta

25

he encontrado la respuesta aquí:

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

Básicamente:

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

Actualice a SignalR 0.4 y solo intentará websockets si el servidor lo admite. – davidfowl

+0

Uso SignalR 0.4 (vea mi actualización más arriba) – reach4thelasers

+0

SI está en .NETFramework 4.5 siempre intentará usar websockets ya que no hay una buena manera de detectarlo ahora. – davidfowl

8

Con el fin de deshabilitar un transporte en el lado del servidor, debe usar algo como esto:

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"); 
     } 
    } 
} 

La solución @ reach4thelasers 'solo lo desactiva en el cliente, pero el cliente podría volver a habilitar el transporte y conectarse.

Saludos.