2017-06-23 4 views
0

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.

Antwort

0

Wenn Sie die Nachrichtenzeichenfolge auf der Clientseite vorbereiten, bevor Sie sie an den Server senden, versuchen Sie, eine Null anzuhängen Zeichen '\ 0' auf das Ende.

socket.addEventListener('open', function(event){ 
    var message = "message to send to the server" + '\0'; 
    var testUintArray = new Uint8Array(stringToAsciiCodeArray(message)); 
    socket.send(testUintArray); 
}); 
Verwandte Themen