【问题标题】:Websockets on Unreal Engine 4?虚幻引擎 4 上的 Websockets?
【发布时间】:2023-03-28 08:51:01
【问题描述】:

我开始使用Unreal Engine 4。我来自 Libgdx,我熟悉在我的游戏中使用 WebSockets 客户端和在服务器上使用带有“ws”的 NodeJS。

但是,我找不到关于 Websockets 和虚幻引擎 4 的信息。

我知道,鉴于它是用 C++ 编程的,您可以将外部静态库添加到虚幻项目中。

我可以使用这个 c++ websocket 库吗?

https://github.com/zaphoyd/websocketpp

它会在 Windows、Mac 和控制台上运行吗?

我不是 c++ 和静态库方面的专家。 请帮忙,谢谢!

【问题讨论】:

  • 您在阅读 github 链接上的自述文件时是否注意到您给作者声称它是“便携式/跨平台(Posix/Windows、32/64 位、英特尔/ ARM/PPC)"
  • 所以你认为它会起作用?
  • UEWebsocket 支持所有虚幻平台:github.com/feixuwu/UEWebsocket
  • 我注意到 UE4.26 已经包含了第三方库 libWebSocketsAsioWebRTC 每一个都可以使用用于通信.. 见C:/Program Files/Epic Games/UE_4.26/Engine/Source/ThirdParty/

标签: c++ websocket static-libraries static-linking unreal-engine4


【解决方案1】:

您可以在 TCP 套接字上关注this tutorial

您需要对代码进行一些更改,因为它不能在 UE 4.10 上运行(本教程最初来自 2014 年)。

在 .h 文件中定义 2 个计时器句柄:

FTimerHandle TimerHandle_Connection;
FTimerHandle TimerHandle_Socket;

在 .cpp 文件中,在 StartTCPReceiver(...) 中更改计时器设置为的行:

GetWorldTimerManager().SetTimer(TimerHandle_Connection, this, &AYourClass::TCPConnectionListener, 0.01, true);

在 TCPConnectionListener(...) 上更改计时器设置的行:

GetWorldTimerManager().ClearTimer(TimerHandle_Connection);//optional, only if you want to stop listening for new connections
GetWorldTimerManager().SetTimer(TimerHandle_Socket, this, &AYourClass::TCPSocketListener, 0.01, true);

(另一种选择是将这些函数线程化,而不是将它们放在计时器中)

以防万一,如果您是 UE 新手,请不要直接在 IDE 上添加代码。转到内容浏览器 > 添加新 > 新 C++ 类。您可以创建一个继承自 Actor 的新类,当您想要开始监听连接时,您可以生成该 Actor。

【讨论】:

  • 嗨,jmcorallo。我在 PlayerController 类中有我的 TCP 侦听器(如 Rama 推荐的),并在构造函数中调用 Launch。首先:这是正确的方法吗?第二:当我构建项目时,我的 ue4editor 崩溃给我这个消息:“访问冲突 - 代码 c0000005(第一次/第二次机会不可用)”并指向设置第一个计时器的行。你能帮我解决这个问题吗?
  • 使用websocket会限制windows和html5上的目标平台,是真的吗?
  • @NikolaLukic 我真的不知道。我只在 Windows 上使用过这个。
猜你喜欢
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2015-02-04
  • 2015-01-13
  • 2015-07-03
  • 2020-03-26
  • 2014-04-26
相关资源
最近更新 更多