Unity3D использует Secure Websocket для WebGL - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать защищенную веб-розетку от сервера без головы Unity до клиента WEBGL. Я знаю, что это не поддерживается изначально. Я видел небезопасные примеры, и я получил их для работы в локальных сборках. WebGL выбрасывает ошибки из-за использования https на веб-сайте и небезопасных подключений на серверной части. Другие заставили его работать, но я не могу найти пример "это работает", так что я в растерянности.

Ошибка

DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

Я пытался следовать Некоторым другимОднако, поскольку я изучаю C # (я из Python) и не имею большого опыта работы с websockets, я не уверен в hpw, чтобы создать безопасный метод.

Сборка Unity: 2019,2

Ресурсы:

using System.Collections;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
using WebSocketSharp;

public class WebSocketDemo : MonoBehaviour
{

    // Use this for initialization
    void Start()
    {
        Debug.Log("WebSocket Class");
        // Create WebSocket instance
        using (var ws = new WebSocket("ws://echo.websocket.org"))
        {

            Debug.Log(ws.ReadyState);

            // Add OnOpen event listener
            ws.OnOpen += (sender, e) => {


            Debug.Log("WS connected!");
            Debug.Log("WS state: " + ws.ReadyState);

            ws.Send(Encoding.UTF8.GetBytes("Hello from Unity 3D!"));
            };

            // Add OnMessage event listener
            ws.OnMessage += (sender, e) => {

                Debug.Log("WS received message: " + e.Data);// Encoding.UTF8.GetString(e.Data));

                ws.Close();
            };

            // Add OnError event listener
            ws.OnError += (sender, e) => {


            Debug.Log("WS error: " + e.Exception);
            };

            // Add OnClose event listener

            // Connect to the server
            ws.Connect();
        }
    }

    // Update is called once per frame
    void Update()
    {

    }
}

Честно говоря, мне нужен раздаточный материал с некоторыми фрагментами кода. Приведенный выше код работает для ws, но я не знаю, что еще требуется для wss на стороне клиента и сервера. Как вы можете сказать, я просто обращаюсь к echo.websocket.org для тестирования.

1 Ответ

0 голосов
/ 28 октября 2019

DOMException: Failed to construct 'WebSocket': An insecure WebSocket connection may not be initiated from a page loaded over HTTPS.

Похоже, вы используете небезопасное соединение с веб-сокетом. Давайте посмотрим на ваш URI:

using (var ws = new WebSocket("ws://echo.websocket.org"))

ws означает небезопасный. Давайте сделаем это безопасным вместо этого. Используйте wss в качестве протокола. Теперь эта строка будет выглядеть так:

using (var ws = new WebSocket("wss://echo.websocket.org"))

...