На веб-сайте, когда установлено соединение с концентратором, я вызываю функцию на стороне сервера для регистрации информации о пользователе в базе данных. Таблица в базе данных используется для отслеживания состояния подключения/отключения пользователя. Я заметил, что не всегда пользователь отображается как подключенный. Таким образом, я думаю, это потому, что он не писал в таблицу. Проверил, лагов нет...
Я добавил ErrorHandlingPipeline для перехвата Ошибка. Все, что у меня есть, это Object reference not set to an instance of an object
. Функция, которая, по-видимому, вызывает ошибку, является первой функцией, которую я вызываю при запуске соединения, как упоминалось ранее. Вот:
public async Task Join()
{
var user = GetUser(Context.User.Identity.Name);
var groupName = user.Group;
await Groups.Add(Context.ConnectionId, groupName);
Clients.Group(groupName).addUser(Context.User.Identity.Name);
// Update group in the db
using (var db = new UserEntities())
{
var connection = db.OnlineUsers.Find(Context.ConnectionId);
connection.Group = groupName;
db.SaveChanges();
}
}
Я также поставил точку останова в public override Task OnConnected()
, но, похоже, сначала вызывается Join()
? так как он не остановился на этом. Я думаю, что это проблема, но почему тогда OnConnected
не будет вызываться первым?
Вот хаб:
$.connection.hub.start().done(function () {
// connected
theHub.server.join();
});
Обновление: похоже, проблема связана с IE11, он работает на FireFox и Chrome. Вот лог консоли из IE:
SignalR: webSockets transport starting.
SignalR: Connecting to websocket endpoint 'ws://localhost:1234/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=1234%3connectionData=%a%b&tid=1'.
SignalR: Websocket opened.
SignalR: webSockets transport connected. Initiating start request.
SignalR: The start request succeeded. Transitioning to the connected state.
SignalR: Now monitoring keep alive with a warning timeout of 13333.333333333332, keep alive timeout of 20000 and disconnecting timeout of 30000
SignalR: Invoking MyHub.Join
SignalR: Triggering client hub event 'addUser' on hub 'MyHub'.
SignalR: MyHub.Join failed to execute. Error: There was an error invoking Hub method 'MyHub.Join'.
SignalR: Triggering client hub event 'addUser' on hub 'MyHub'.
[SignalR: Triggering client hub event 'addUser' on hub 'MyHub'.
SignalR: Invoking MyHub.GetaddUser
signalRServer
при создании прокси? 25.10.2016signalrRUrl
, который передается в процедуру инициализации. Это связано с:<script type="text/javascript" src="~/signalr/hubs"></script>
? 25.10.2016