Unity WebGL中的Photon Secure WebSocket连接

时间:2017-06-01 15:34:28

标签: ssl unity3d websocket photon unity-webgl

当我尝试使用安全的websocket连接将本地Photon Server与Unity3D WebGL Build连接时,我遇到了麻烦。我可以建立与websockets(而不是安全的)以及除WebGL构建之外的任何其他环境的连接(即使在使用WebGL配置的Unity的播放模式中,当我获得构建时它也不起作用)。我猜这个问题与我的证书有关,但我不完全确定。我尝试过自签名的,真实的。

这是错误:

enter image description here

  

与'wss:// localhost:19091'的WebSocket连接失败:错误   连接建立:net :: ERR_INSECURE_RESPONSE

我已经尝试过127.0.0.1而不是localhost,试图更改端口。

我从Photon的网站上获得了我的套接字代码,链接在这里:

https://www.photonengine.com/sdks#onpremiseunity3d

我的客户端代码(使用Photon的SocketWebTcp类)是这样的:

using ExitGames.Client.Photon;
using UnityEngine;

public class HiveClient : IPhotonPeerListener
{

    public PhotonPeer PhotonClient { get; set; }

    public HiveClient() { }

    public void Connect()
    {
        this.PhotonClient = new PhotonPeer(this, ConnectionProtocol.WebSocketSecure);
        this.PhotonClient.SocketImplementationConfig.Add(ConnectionProtocol.WebSocketSecure, typeof(SocketWebTcp));
        this.PhotonClient.Connect("wss://localhost:19091", "Hive");
    }

    public void DebugReturn(DebugLevel level, string message)
    {
        Debug.Log("DebugReturn: " + level.ToString() + " Message: " + message);
    }

    public void OnEvent(EventData eventData)
    {
        Debug.Log("OnEvent: " + eventData.Code);
    }

    public void OnOperationResponse(OperationResponse operationResponse)
    {
        Debug.Log("OnOperationResponse: " + operationResponse.DebugMessage);
    }

public void OnStatusChanged(StatusCode statusCode)
{
    Debug.Log("OnStatusChanged: " + statusCode.ToString());
}}

这是应用程序在光子服务器配置中的websocket监听器:

<WebSocketListeners>
  <WebSocketListener IPAddress="0.0.0.0" Port="19091" DisableNagle="true" InactivityTimeout="10000" Secure = "true" StoreName = "MY" CertificateName = "DESKTOP-PQ845BC" UseMachineStore = "true">
  </WebSocketListener>
</WebSocketListeners>

最后,这是我的自签名证书:

enter image description here

谢谢。

1 个答案:

答案 0 :(得分:1)

解决了这个问题,似乎证书不适用于像127.0.0.1这样的ip地址。证书需要一些地址(如xxx.photon.com)

作为临时解决方案,可以向定义的ip发送https请求并插入ip chrome允许的ips。这个临时解决方案涉及到这个答案: https://stackoverflow.com/a/43493521/3013806