在UE4中使用WebSocket

前言 这一节会介绍WebSocket协议,和在UE4中如何使用WebSocket进行通讯。引擎中内置了现成的WebSockets模块和第三方库“libWebSockets”,接下来会调用现有模块来创建两个插件,分别负责创建WebSocket服务器和WebSocket客户端。 为什么是WebSocket 介绍 WebSocket是一种全双工、双向通信协议,设计用于在单个TCP连接上进行实时通信。 WebSocket特点 1、双向通信:客户端和服务器可以在任何时间相互发送消息,而不需要轮询或长轮询。 2、低延迟:因为它建立在TCP连接之上,并且避免了HTTP请求和响应的开销,WebSocket通信具有较低的延迟。 3、持久连接:WebSocket连接一旦建立,可以持续使用,直到客户端或服务器主动关闭连接。 工作原理 1、握手阶段:WebSocket通信开始时,客户端发起一个标准的HTTP请求,包含一些特殊的头信息,表明它希望升级到WebSocket协议。 2、协议升级:如果服务器支持WebSocket协议,它会通过HTTP响应确认升级请求。完成握手后,HTTP连接升级为WebSocket连接。 3、数据传输:握手完成后,客户端和服务器之间可以通过WebSocket协议进行全双工通信,可以传输文本和二进制等格式消息。 使用场景 WebSocket协议适用于需要实时更新和低延迟的应用,如: 1、即时通讯:如聊天应用和消息系统。 2、实时通知:如股票价格更新、体育比分等。 3、在线游戏:需要快速、频繁的状态更新。 4、协同编辑:如多人同时编辑文档、表格等。 和HTTP区别 1、HTTP有一个缺陷就是通讯只能由客户端发起,它们只能单向请求,如果客户端需要监测服务器中会连续变化的某一参数,我们只能使用“轮询”,即没隔一段时间就发送一个查询请求,这种轮询效率比较低,且浪费资源。 2、WebSocket连接一旦建立,客户端和服务器都可以主动发送消息给彼此,即它是一种双向通讯。 总结 WebSocket协议提供了一种高效、低延迟的双向通信方式,适用于需要实时数据传输的应用场景。通过WebSocket,客户端和服务器可以在单个持久TCP连接上自由地交换数据,而不必受到传统HTTP请求/响应模式的限制。 客户端实现 Unreal Engine中的“Runtime/Online/下有一个”WebSocket“模块,模块中的IWebSocket接口提供了客户端常用的功能,连接、关闭、发送消息等。 1、创建插件后在.Build.cs中加入”WebSockets“模块 1 2 3 4 5 6 7 8 PublicDependencyModuleNames.AddRange( new string[] { "Core", "WebSockets",. } ); 2、我这里创建一个继承自UObject的类:UWSClients。WSClients.h实现如下: /********************************************************* * @copyright @author Imrcao @date 2024年06月27日16:25:00 @brief 创建一个WebSocket客户端,支持Win64,Win32,IOS,MacOS,Linux平台 @See **********************************************************/ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 #pragma once #include "CoreMinimal....

十二月 3, 2022 · Imrcao