Soy nuevo en socket.io y quiero enviar imágenes usando cartero en una solicitud de WebSocket. Lo he buscado pero no he podido encontrar ninguna respuesta razonable. Adjunto el SS de mi solicitud de cartero.
El siguiente es el código de escucha del lado del servidor para socket.io
$socket->on('send-message', function ($data) use ($io, $socket) { $validator = Validator::make($data, [ 'token' => 'required', 'socket_id' => 'required', 'receiver_id' => 'required', 'message' => 'required', 'file' => 'required|file|image' ]); if ($validator->fails()) return $io->emit('error', json_encode(['message' => $validator->messages()])); return $io->emit('success', json_encode(['message' => 'image uploaded successfully'])); });Puede enviar la imagen como marcos de datos binarios :
El método WebSocket .send() puede enviar texto o datos binarios. "socket.send(body)" permite el cuerpo en formato de cadena o binario, incluidos Blob, ArrayBuffer, etc. No se requiere configuración: simplemente envíelo en cualquier formato.
Así que básicamente:
WebSocket.send(000100101010000010011100.....)PERO, una solución mucho más simple sería usar una cadena Base64 , ya que TODOS los navegadores lo admiten de forma nativa :
WebSocket.send('data:image/png;base64,iVBORw0KGgoAAAANSUhEU .......')