如何解决WebSocket-Sharp在Unity3d中无法跨与访问不同网断服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决WebSocket-Sharp在Unity3d中无法跨与访问不同网断服务器相关的知识,希望对你有一定的参考价值。

参考技术A 咱们需要使用 Socket Policy Server.
Unity3D 包含了一个简单的 Socket Policy Server (sockpol.exe).
需要在启动自己的应用之前启动它
下面是在咱们的环境中,通过命令行打开服务器(Unity 4.2, Win 8).
>cd C:\Program Files (x86)\Unity\Editor\Data\Tools\SocketPolicyServer\
>sockpol.exe --all
需要在调用WebSocket.Connect 之前,调用Security.PrefetchSocketPolicy,如下Security.PrefetchSocketPolicy (
,
);
...
参考技术B 我们需要使用 Socket Policy Server.
Unity3D 包含了一个简单的 Socket Policy Server (sockpol.exe).
你需要在启动你的应用之前启动它
下面是在我们的环境中,通过命令行打开服务器(Unity 4.2, Win 8).
>cd C:\Program Files (x86)\Unity\Editor\Data\Tools\SocketPolicyServer\
>sockpol.exe --all

你需要在调用WebSocket.Connect 之前,调用Security.PrefetchSocketPolicy,如下
Security.PrefetchSocketPolicy ("localhost", 843);
...
ws.Connect ();本回答被提问者和网友采纳

WebSocket-Sharp 不响应公共 IP 地址

【中文标题】WebSocket-Sharp 不响应公共 IP 地址【英文标题】:WebSocket-Sharp doesn't respond to public IP address 【发布时间】:2020-10-14 19:12:32 【问题描述】:

我在公共互联网 IP 上托管 WebSocket-Sharp 时遇到问题。在本地它工作正常。 此问题发生在 Windows 和 Linux 上。 我没有收到超时或 HTTP 状态代码,页面立即阻塞。 我 99% 确定我正确设置了端口转发;我已经尝试过使用 Android 调制解调器、*** 和常规 NAT 路由器设置。

我尝试了以下组合:

192.168.1.2:80 8080 5000 39393

0.0.0.0: ....

公共IP:....

【问题讨论】:

明天有资格获得赏金,但我今天要为你付款 问题是不安分 这个information 可能有用 请确保端口 10000% 开放!使用在线端口检查器查看它们是否打开! @RobotRock:F12 调试器在浏览器中的输出是什么?您是在本地计算机上还是在服务器上进行测试?你有防火墙激活吗?通过监听例如仔细检查端口可访问性网猫。 【参考方案1】:

问题在于 WebsScketSharp 提供的 HttpServer。纯 websocket 变体 (WebSocketServer.cs),而不是具有 Get 功能的 HttpServer 选项,具有将 AllowForwardedRequest 设置为 true 的选项,因此可以从非 localhost 地址访问。 HttpServer 类不支持这一点。 这是部分解决方案,因为我放弃了常规的 GET 功能,但我没问题。

【讨论】:

【参考方案2】:

好的,假设您的公共 IP 地址的服务器是 Linux:

    检查哪些端口正在监听,哪些程序正在监听这些端口
netstat -tulpn
    在提供程序和服务器中检查您的防火墙规则
sudo ufw status
    查看是否有连接到您的服务器
sudo tcpdump

您可以过滤原始 Ip 的端口(如果您使用不同 Ip 的代理)。

sudo tcpdump | grep "80\|123.45.67.89"

这是查看数据包是否进入服务器的唯一方法。

如果您使用 Docker,请告诉我,因为想法有点不同。

    您可以创建一个隧道并尝试是否是本地的
ssh -L 80:123.45.67.89:80 ubuntu@yourserver.com

干杯

【讨论】:

以上是关于如何解决WebSocket-Sharp在Unity3d中无法跨与访问不同网断服务器的主要内容,如果未能解决你的问题,请参考以下文章

基于SuperSocket实现的WebSocket服务器 和Unity中使用Websocket

将 C# Websocket 示例转换为 Unity MonoBehaviour

websocket-sharp 如何使用 socketio 服务器并发送“emit”请求

WebSocket-Sharp 不响应公共 IP 地址

使用websocket-sharp

Websocket-Sharp获取客户端IP地址和端口号