Используя websocket-sharp для.NET, как сервер может закрыть WebSocketBehavior?
Я пытаюсь использовать websocket-sharp для проекта, и сервер должен иметь возможность сбрасывать соединения websocket.
Соединения представлены классом WebSocketBehavior, от которого вы наследуете. Нет никаких Stop
или же Close
или же Disconnect
метод на WebSocketBehavior
, Самое близкое, что я мог найти, это
WebSocketBehavior.Context.WebSocket.Close
Поэтому я попытался добавить метод в мой переопределяющий класс
public class MySocket : WebSocketBehavior
{
public void Close()
{
base.Context.WebSocket.Close();
}
}
Но это вызывает ошибку, когда ведение журнала включено
2/5/2016 7:08:25 PM|Error|WebSocket.Close|This operation isn't available in: closed
Как сервер может отключить / закрыть соединение WebSocket?
1 ответ
Как указано в билете в их репо
Вам просто нужно закрыть соответствующий сеанс:
Sessions.CloseSession(ID);
РЕДАКТИРОВАТЬ:
Это тот же код, что и OP, но вызванный через правильные абстракции, который должен работать теоретически, однако тот факт, что он пытается получить доступ к вещам с "низкого уровня", заставил меня заподозрить, что он получает доступ к другим внутренним функциям, все в обход "открытого метода" "который может привести к неправильному поведению (например, вещи, вызываемые" публичными методами ", больше не работают, я предлагаю вам получить доступ ко всему только из надлежащих абстракций, чтобы избежать проблем, после этого, если проблема не исчезнет, вы должны сделать запрос с исправлением ошибки". в исходном репозитории. Такая ошибка не может быть исправлена там, потому что необходимо знать обо всем другом написанном вами коде.
После этого вы должны отслеживать как на стороне клиента, так и на стороне сервера файл журнала, чтобы выяснить, что происходит, например, соединение уже закрыто клиентом (как указано в комментариях Evk)