使用WebGL Unity连接到TCP服务器

4
我有一个TCP服务器(我无法更改/修改)正在运行,它发送数据,我想让它连接到Unity WebGL构建。首先,我知道在WebGL中本地不支持连接到TCP服务器。我搜索了解决方法并尝试了以下方法:使用Websockify将TCP服务器连接到WebSocket。我使用了NativeWebsocket库,但不幸的是它无法连接到服务器。我还阅读了这些博客:
如何让Unity WebGL构建连接到本地python服务器?

https://forum.unity.com/threads/webgl-tcp-client.738419/

但它们并没有真正帮助到我。有人尝试过这个或者知道如何让它工作(如果可能的话 :))吗? 提前感谢

1个回答

3
Unity3D使用.NET C#库,因此即使Unity没有明确提供TCP库,您仍然可以使用.NET的TCP API。值得注意的是,并非所有平台都支持此功能,例如WebGL不支持TCP通信。
参见.NET文档中的示例以获取有关实施的帮助:System.Net.Sockets TcpClient 对于WebGL,无法使用TCP通信,因此您必须将服务器包装在某种HTTP/Websockets传输中 - 您不能保留原样服务器,因为由于安全原因,协议无法进行通信。
如果您对实现的具体细节有任何问题,请随时在评论中提问 - 我没有足够的信息进一步阐述您的特定应用程序。

那么在我的情况下,我无法更改服务器设置,因此这是不可能的,对吗?我曾经想过,如果我在服务器上托管的端口上使用 WebSockify,并从中创建一个 WebSocket 与我的应用程序连接,但这并没有起作用,您知道原因吗? - Okabe
如果您使用WebSockets来包装TCP服务器,它有可能正常工作 - 仅使用客户端的WebSocket API无法解决Web上TCP通信的限制问题。您需要通过WebSocket将服务器流量发送到一个解决方法中,这意味着服务器需要通过类似websockify的东西进行通道传输。 - AlexApps99
如果您想获得如何设置类似内容的建议,请提供有关您遇到的问题的详细信息。 - AlexApps99
从您的评论中,我了解到如果没有访问服务器,则无法连接到WebGL。因此,我的设置如下:我有一个外部应用程序,它具有在端口上打开的TCP函数。我无法更改此应用程序或服务器,并且我有一个Unity WebGL项目,希望从应用程序(TCP服务器)接收数据。 - Okabe
就目前的描述而言,没有解决方案。出于安全原因,没有直接访问TCP流的Web API。您唯一的解决方案是将TCP流封装在Websockets中,这是您需要在服务器上托管的内容(可以是相关的服务器或您托管的另一个服务器)。 - AlexApps99
好的,谢谢你的澄清。那我得寻找另一种解决方案了。 - Okabe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接