Обработка WebSocket на стороне сервера - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь заставить веб-сокеты работать на Гололенах.У меня в настоящее время есть StreamSocketListener, действующий как сервер на Hololens.Запрос на обновление веб-сокета получен, и я правильно выполняю квитирование веб-сокета, сокет остается открытым как на клиенте, так и на сервере.

Однако тип сокета, который делает рукопожатие, является StreamSocket, а не StreamWebSocket, и я могу 'Кажется, что в сокете написано:

private async void ConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs eventArgs)
{
    RequestHandler.Request request = await RequestHandler.ParseRequest(eventArgs.Socket.InputStream);

    RequestHandler.Response response = RequestHandler.ProcessRequest(request);

    byte[] encodedResponse = Encoding.UTF8.GetBytes(response.mHeader);
    await eventArgs.Socket.OutputStream.WriteAsync(encodedResponse.AsBuffer());

    if (null != response.mTextContent || null != response.mBinaryContent)
    {
        if (null != response.mTextContent)
        {
            encodedResponse = Encoding.UTF8.GetBytes(response.mTextContent);
        }
        else
        {
            encodedResponse = response.mBinaryContent;
        }

        await eventArgs.Socket.OutputStream.WriteAsync(encodedResponse.AsBuffer());
    }

    if (request.mWebsocketUpgrade)
    {
        receivedSocket = eventArgs.Socket;
    }
    else
    {
        eventArgs.Socket.Dispose();
    }
}

Возможно ли «обновить» или «преобразовать» полученный сокет в StreamWebSocket или этот подход некорректен и должен идти другим путем?

Любой совет будет высоко ценится!

1 Ответ

0 голосов
/ 20 сентября 2018

Оказывается, вы можете просто использовать этот сокет, по крайней мере, для моих основных намерений, которые должны быть в состоянии передавать основные события только в браузер.Почти наверняка есть лучший способ сделать это, но он работает.

...