UE接受WebSocket消息-像素流

UE接受WebSocket消息-像素流

以像素流举例.
UE5.0.3
新建C++项目
我们项目需求就是与前端通讯 前端发送Json对象给UE UE解析并且根据发送过来的数据进行操作

一、启动像素流插件(Pixel Streaming)

像素流插件 重启引擎

二、在C++中设置代理和添加组件

在XXXX.Build.cs(XXX是项目名字)中添加PixelStreaming模块

PublicDependencyModuleNames.AddRange(new string[] { "PixelStreaming" }); 

新建一个PlayerController
我这里命名为AMain_PlayerController

添加组件

#include "PixelStreamingDelegates.h"
#include "PixelStreamingInputComponent.h"
//信令服务器链接状态
UPROPERTY()
UPixelStreamingDelegates* ReturnValue;
//接受消息
UPROPERTY()
UPixelStreamingInput* PixelStreamingInputComponent;

构建函数AMain_PlayerController();
初始化成员

AMain_PlayerController::AMain_PlayerController(): ReturnValue(nullptr)
{
	ReturnValue=UPixelStreamingDelegates::GetPixelStreamingDelegates();
	PixelStreamingInputComponent=CreateDefaultSubobject<UPixelStreamingInput>(TEXT("PixelStreamingInput"));
}

添加链接用户的ID

//查看连接进来的玩家ID
void NewConnectionNative(FString PlayerId,bool WasQualityController) const;
//打印连接玩家的ID
void AMain_PlayerController::NewConnectionNative(FString PlayerId, bool WasQualityController) const
{
	UE_LOG(LogTemp, Warning, TEXT("ID为:%s"),*PlayerId);
}

新建函数JSONParse
(这个函数是用来接收消息的,不一定是非要JSONParse可以根据自身需求创建)
*注一定要带一个FString因为消息只能接受字符串,发送也是字符串

void JSONParse(const FString& InMessage);

BinginPlay中设置代理

void AMain_PlayerController::BeginPlay()
{
	Super::BeginPlay();
	//设置接受到消息后代理
	PixelStreamingInputComponent->OnInputEvent.AddDynamic(this,&AMain_PlayerController::JSONParse);
	//设置信令服务器代理
	ReturnValue->OnConnectedToSignallingServerNative.Broadcast();
	ReturnValue->OnNewConnectionNative.AddUObject(this, &AMain_PlayerController::NewConnectionNative);
}

这样你的void AMain_PlayerController::JSONParse(const FString& InMessage){}中的InMessage就是你的WebSocket向UE发送的消息

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Netty是一个基于Java的异步事件驱动的网络应用框架,它提供了一系列易于使用的API,用于创建高性能、可扩展的网络服务器和客户端应用程序。 WebSocket是一种在单个TCP连接上进行全双工通信的协议,它允许服务器主动向客户端推送数据,而不需要客户端先发起请求。在Java中,Netty提供了对WebSocket的支持,可以通过Netty来实现WebSocket服务器和客户端。 当使用Netty实现WebSocket时,Sec-WebSocket-Protocol是WebSocket握手过程中的一个HTTP头部字段,它用于指定客户端和服务器之间通信所使用的子协议。子协议是在WebSocket连接建立后,用于在双方之间传输数据的协议。 在Netty中,可以通过设置`WebSocketServerProtocolHandler`的`subprotocols`属性来指定支持的子协议。例如,可以使用以下代码来设置子协议为"chat": ```java ChannelPipeline pipeline = channel.pipeline(); pipeline.addLast(new HttpServerCodec()); pipeline.addLast(new HttpObjectAggregator(65536)); pipeline.addLast(new WebSocketServerCompressionHandler()); pipeline.addLast(new WebSocketServerProtocolHandler("/websocket", "chat")); pipeline.addLast(new MyWebSocketHandler()); ``` 在上面的代码中,`WebSocketServerProtocolHandler`的第二个参数就是Sec-WebSocket-Protocol的值,这里设置为"chat"。这样,当客户端与服务器进行握手时,可以指定"chat"作为子协议,在连接建立后双方就可以使用该子协议来进行通信。 希望这个回答对你有帮助!如果你还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值