Используя 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)

Другие вопросы по тегам