2014-12-05 1 views
1

Я ранее реализовал версию сигнала R 1.1.3 в проекте Asp.Net-MVC, но теперь мне нужно обновить версию сигнала R с последней версией является сигналом R 2.1.2, внутри сигнала R 2.1.2 проблема в том, что его метод поддержки не поддерживается onDisconnected() в классе концентратора. поэтому я могу обработать событие разъединения сигнала R в моем проекте.Handle onDisconnected() метод 1.x to SignalR 2.1.2

ответ

6

В версии 2.x, События подключения возвращаются Задача, принимающая входной параметр bool stopCalled. Вам просто нужно обновить свой метод, чтобы вернуть задачу, которая возвращается базой. OnDisconnected (stopCalled).

Documentation

public override Task OnDisconnected(bool stopCalled) 
{ 
    // Add your own code here. 
    // For example: in a chat application, mark the user as offline, 
    // delete the association between the current connection id and user name. 
    return base.OnDisconnected(stopCalled); 
} 

EDIT

Я считаю, что текущая документация SignalR фактически может быть ошибочно советуя использовать OnDisconnected() без BOOL stopCalled параметра. Однако, глядя на источник HubBase (который наследует хаб), вы можете найти метод OnDisconnected, объявленный как следующий в 2.x.

/// <summary> 
/// Called when a connection disconnects from this hub gracefully or due to a timeout. 
/// </summary> 
/// <param name="stopCalled"> 
/// true, if stop was called on the client closing the connection gracefully; 
/// false, if the connection has been lost for longer than the 
/// <see cref="Configuration.IConfigurationManager.DisconnectTimeout"/>. 
/// Timeouts can be caused by clients reconnecting to another SignalR server in scaleout. 
/// </param> 
/// <returns>A <see cref="Task"/></returns> 
public virtual Task OnDisconnected(bool stopCalled) 
{ 
    return TaskAsyncHelper.Empty; 
} 
+0

Благодаря его работа, но теперь я заметить, что после обновления signalR до последней версии ее не работает надлежащей внутри хрома и Opera, внутри этот браузер он посылает сигнал на другой браузер, но не получает сигнал из другого браузера –

+0

Это звучит например, ваши браузеры подключены к различным экземплярам концентратора. Все они должны содержаться в одном экземпляре концентратора, и вам необходимо фактически передать сообщение всем связанным экземплярам. Это звучит как совершенно отдельный вопрос. Если у вас все еще есть проблемы, я рекомендую создать дополнительный вопрос. –

+0

http://stackoverflow.com/questions/27717554/signalr-not-works-on-google-chrome –