<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>WebSocket on 云笺小筑</title>
    <link>https://imrcao.top/tags/websocket/</link>
    <description>Recent content in WebSocket on 云笺小筑</description>
    <generator>Hugo -- 0.122.0</generator>
    <language>zh-cn</language>
    <lastBuildDate>Sat, 03 Dec 2022 17:23:10 +0800</lastBuildDate>
    <atom:link href="https://imrcao.top/tags/websocket/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>在UE4中使用WebSocket</title>
      <link>https://imrcao.top/posts/%E5%BD%92%E6%A1%A3/%E5%9C%A8ue4%E4%B8%AD%E4%BD%BF%E7%94%A8websocket/</link>
      <pubDate>Sat, 03 Dec 2022 17:23:10 +0800</pubDate>
      <guid>https://imrcao.top/posts/%E5%BD%92%E6%A1%A3/%E5%9C%A8ue4%E4%B8%AD%E4%BD%BF%E7%94%A8websocket/</guid>
      <description>前言 这一节会介绍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[] { &amp;#34;Core&amp;#34;, &amp;#34;WebSockets&amp;#34;,. } ); 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 &amp;#34;CoreMinimal.</description>
    </item>
  </channel>
</rss>
