Ich versuche, die uWebSockets-Bibliothek zu verwenden, um binäre ArrayBuffer-Daten zu lesen, die von einem Web-Client gesendet werden.Lesen Sie uint8array direkt von uWebSockets-Server
fand ich eine Frage an den Repo-Problemen, die dies für den Fall von Text/Blob-Daten beschreiben, aber ich möchte in dem Web-Client uint8array Daten analysieren kommen:
ich bin mit dem sehr einfachen Beispiel Client:
int main()
{
uWS::Hub h;
h.onMessage([](uWS::WebSocket<uWS::SERVER> *ws, char *message, size_t length, uWS::OpCode opCode) {
uint8_t messageString [length]; //Create char array with length of message length
cout << "length: " << length << endl;
for (int i = 0; i < length; i++) { //Iterate through each character in the message
messageString[i] = (uint8_t)message[i]; //Add message character to messageString
}
cout << "Message: " << &messageString[1] << endl;
ws->send (message, length, opCode);
});
h.listen (3000);
h.run();
}
und auf der Client-Seite ich tun:
{
ws = new WebSocket(wsUri);
ws.binaryType = "arraybuffer";
ws.onopen = function (evt) { onOpen(evt) };
ws.onclose = function (evt) { onClose(evt) };
ws.onmessage = function (evt) { onMessage(evt) };
ws.onerror = function (evt) { onError(evt) };
}
und uint8array
auf der Buchse senden. Das Text/Blob-Beispiel funktioniert nicht, versuche es zu lesen, da ein uint8_t
Array nicht funktioniert, ich kann nicht für das Leben von mir herausfinden, wie man das liest, damit die Daten verwendbar sind. Beachten Sie, dass das Echo zurück zum Client jedoch funktioniert - ich bekomme zurück, was ich eingegeben habe.