使用用于WebGL的安全Websocket的Unity3D

问题描述 投票:0回答:1

我正在尝试从统一的无头服务器到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 Build: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进行测试。

unity3d websocket unity-webgl websocket-sharp
1个回答
0
投票

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"))

© www.soinside.com 2019 - 2024. All rights reserved.