1

我正在尝试构建一个从统一无头服务器到 WEBGL 客户端的安全 websocket。我知道它不是本机支持的。我见过不安全的例子,我已经让那些在本地构建中工作。由于在网站上使用 https 和在后端使用不安全的连接,WebGL 会抛出错误。其他人已经让它工作了,但我找不到“它工作”的例子,所以我不知所措。

错误

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

我尝试遵循其他一些指南,但是因为我正在学习 C#(我来自 Python)并且在 websockets 方面没有很多经验我不确定在 hpw 上构建安全方法。

统一构建: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 进行测试。

4

1 回答 1

1

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

听起来您正在使用不安全的 websocket 连接。让我们看一下您的 URI:

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

ws意味着不安全。让我们让它变得安全。用作wss协议。现在这条线看起来像:

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

于 2019-10-28T00:10:05.447 回答