当我尝试使用安全的websocket连接将本地Photon Server与Unity3D WebGL Build连接时,我遇到了麻烦。我可以建立与websockets(而不是安全的)以及除WebGL构建之外的任何其他环境的连接(即使在使用WebGL配置的Unity的播放模式中,当我获得构建时它也不起作用)。我猜这个问题与我的证书有关,但我不完全确定。我尝试过自签名的,真实的。
这是错误:
与'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>
最后,这是我的自签名证书:
谢谢。
答案 0 :(得分:1)
解决了这个问题,似乎证书不适用于像127.0.0.1这样的ip地址。证书需要一些地址(如xxx.photon.com)
作为临时解决方案,可以向定义的ip发送https请求并插入ip chrome允许的ips。这个临时解决方案涉及到这个答案: https://stackoverflow.com/a/43493521/3013806