Ответ 1
Я нашел ответ здесь:
https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client
В принципе:
$.connection.hubs.start({ transport: 'longPolling' }, function() {
console.log('connection started!');
});
Я обновился до .NET 4.5, теперь SignalR кажется настойчивым в использовании WebSockets в Firefox/Chrome - хотя я только на Windows 7, у которого нет сервера WebSocket.
Запрос явно не выполняется:
Firefox can't establish a connection to the server at ws://www.site.local/signalr?connectionData=
Как заставить SignalR забыть о веб-сайтах и использовать Long Polling, или есть способ настроить веб-узлы для Windows 7, которые мне не хватает?
Обновление.... Я использую 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" />
Я нашел ответ здесь:
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 отключает его только в клиенте, но клиент может снова включить транспорт и подключиться.
Приветствия.