OSC with Nano ESP32 doesn't work properly

I'm trying to send OSC data with a Nano ESP32 with the following code (the network SSID and password are filled in properly in the code I'm uploading, I'm also using the built-in LED to indicate if there's something wrong with the connection):

#include "WiFi.h"
#include "AsyncUDP.h"
#include <OSCMessage.h>

const char * ssid = ""; // my net SSID
const char * password = ""; // my net password

AsyncUDP udp;

void setup() {
  for(int i = 0; i < 4; i++){
    pinMode(digitalPins[i], INPUT_PULLUP);
    activity[i] = false;
    oldVals[i] = 1;
  }

  pinMode(LED_BUILTIN, OUTPUT);
  // try to connect to the local network
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    digitalWrite(LED_BUILTIN, HIGH);
    delay(500);
  }
  digitalWrite(LED_BUILTIN, LOW);
  if(!udp.connect(IPAddress(192,168,1,7), 9000)) {
    while (true) {
      for (int i = 0; i < 2; i++) {
        digitalWrite(LED_BUILTIN, !i);
        delay(100);
      }
    }
  }
}

void loop() {
  for (int i = 0; i < 10; i++) {
    OSCMessage msg("/test");
    msg.add(i);
    msg.send(udp);
    delay(500);
  }
}

I'm trying to get the data into Pure Data, but instead of a single message, I'm getting the message broken, like this:

47 116 101 115 116 0
0
0
44
105
0
0
0 0 0 2

For Pure Data to properly parse this message, all the values above should be in a single message. Why is this message broken to smaller chunks? Is there a way to assemble these smaller chunks to a single message?