2012-04-03 41 views
13

Tôi đã nâng cấp lên .NET 4.5, bây giờ SignalR dường như khăng khăng sử dụng WebSockets trong Firefox/Chrome - mặc dù tôi chỉ có trên Windows 7 không có WebSocket Server.SignalR - Làm cách nào để vô hiệu hóa WebSockets

Yêu cầu rõ ràng là thất bại:

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

Làm thế nào để buộc SignalR quên Websockets và sử dụng Polling Long, hoặc là có một cách để thiết lập Websockets cho Windows 7 mà tôi đang thiếu?

Cập nhật .... Tôi đang sử dụng 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" /> 

Trả lời

25

Tôi tìm thấy câu trả lời ở đây:

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

Về cơ bản:

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

Cập nhật lên SignalR 0.4 và nó sẽ chỉ cố gắng websockets nếu máy chủ hỗ trợ nó. – davidfowl

+0

Tôi đang sử dụng SignalR 0.4 (xem cập nhật của tôi ở trên) – reach4thelasers

+0

NẾU bạn đang ở trên .NETFramework 4.5, nó sẽ luôn luôn cố gắng sử dụng websockets vì không có cách nào tốt để phát hiện nó ngay bây giờ. – davidfowl

8

Để vô hiệu hóa một giao thông vận tải ở phía máy chủ, bạn phải sử dụng một cái gì đó như thế này:

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

Giải pháp @ reach4thelasers chỉ vô hiệu hóa nó trong ứng dụng khách, nhưng khách hàng có thể kích hoạt lại việc vận chuyển và kết nối.

Chúc mừng.

Các vấn đề liên quan