【发布时间】:2017-06-23 14:15:20
【问题描述】:
我正在尝试使用 uWebSockets 库来读取从 Web 客户端发送的二进制 ArrayBuffer 数据。
我发现了一个关于 repo 问题的问题,该问题描述了文本/blob 数据的情况,但我想解析来自 Web 客户端的 uint8array 数据:
我正在使用非常简单的示例客户端:
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();
}
在客户端我这样做:
{
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) };
}
并通过套接字发送uint8array。 text/blob 示例不起作用,尝试将其读取为 uint8_t 数组不起作用,我终生无法弄清楚如何读取它以使数据可用。请注意,返回给客户端的回显确实有效 - 我会取回我输入的内容。
【问题讨论】:
标签: javascript c++ websocket