Why my websocket client not trigger event OnMessage

Hi, I’m trying to create a WebSocket client in Unreal to communicate with my server. When I run the connection, it works — the log shows it, and on my server side I can see the client in the list. But after that, when I try to send a message from the server to the client, it doesn’t work. I don’t know why.
Here is my script:

cpp

UWebSocketClient* UWebSocketClient::CreateWebSocketClient(
    UObject* WorldContextObject,
    const FString& Role)
{
    UWebSocketClient* Client = NewObject<UWebSocketClient>(WorldContextObject);

    Client->ClientRole = Role;

    // Auto connect
    Client->ConnectInternal();

    return Client;
}

void UWebSocketClient::ConnectInternal()
{
    if (!FModuleManager::Get().IsModuleLoaded("WebSockets"))
    {
        FModuleManager::LoadModuleChecked<FWebSocketsModule>("WebSockets");
    }

    Socket = FWebSocketsModule::Get().CreateWebSocket(Url);

    Socket->OnConnected().AddUObject(this, &UWebSocketClient::OnConnected);
    Socket->OnConnectionError().AddUObject(this, &UWebSocketClient::OnConnectError);
    Socket->OnClosed().AddUObject(this, &UWebSocketClient::OnClosed);
    Socket->OnMessage().AddUObject(this, &UWebSocketClient::OnMessage);

    Socket->Connect();
}

void UWebSocketClient::OnConnected()
{
    FString RegisterMsg = FString::Printf(TEXT("REGISTER:%s"), *ClientRole);
    UE_LOG(LogTemp, Warning, TEXT("UE start connect"));
    Socket->Send(RegisterMsg);
}

void UWebSocketClient::OnConnectError(const FString& Error)
{
    UE_LOG(LogTemp, Warning, TEXT("UE connect fail"));
}

void UWebSocketClient::OnClosed(int32 StatusCode, const FString& Reason, bool bWasClean)
{
    // Optional log
}

void UWebSocketClient::OnMessage(const FString& Message)
{
    // Event chỉ broadcast Message
    UE_LOG(LogTemp, Warning, TEXT("UE RECEIVED (C++): %s"), *Message);
    OnMessageEvent.Broadcast(Message);
}

void UWebSocketClient::SendMessageToServer(const FString& Message)
{
    if (Socket.IsValid() && Socket->IsConnected())
    {
        Socket->Send(Message);
    }
}

header


class IWebSocket;

// Event gửi tin nhắn về Blueprint (Không cần Sender)
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(
    FOnWebSocketMessage,
    const FString&, Message
);

UCLASS(Blueprintable)
class MYPROJECT2_API UWebSocketClient : public UObject
{
    GENERATED_BODY()

public:

    /** NODE: Chỉ cần Role → Tự động connect */
    UFUNCTION(BlueprintCallable, Category = "WebSocket",
        meta = (DisplayName = "Create WebSocket Client", WorldContext = "WorldContextObject"))
    static UWebSocketClient* CreateWebSocketClient(
        UObject* WorldContextObject,
        const FString& Role
    );

    /** Gửi message lên server */
    UFUNCTION(BlueprintCallable, Category = "WebSocket")
    void SendMessageToServer(const FString& Message);

public:

    /** Role của client */
    UPROPERTY(BlueprintReadOnly, Category = "WebSocket")
    FString ClientRole;

    /** Event returns Message ONLY */
    UPROPERTY(BlueprintAssignable, Category = "WebSocket")
    FOnWebSocketMessage OnMessageEvent;

protected:

    virtual void BeginDestroy() override;

private:

    void ConnectInternal();
    void OnConnected();
    void OnConnectError(const FString& Error);
    void OnClosed(int32 StatusCode, const FString& Reason, bool bWasClean);
    void OnMessage(const FString& Message);

private:

    FString Url = TEXT("ws://127.0.0.1:7777");
    TSharedPtr<IWebSocket> Socket;
};

my node