Sono stato interessato al progetto Socket.io
di recente e mi chiedo se c'è un modo semplice per inviare immagini o anche altri tipi di file senza dover usare altra libreria. Non sto cercando di caricare il file sul server per l'archiviazione, voglio solo trasmetterlo a coloro che sono nella chat room in quel momento. Quindi il codice dovrebbe essere minimo. Comunque sono davvero pessimo con la codifica/decodifica, quindi qualche codice di esempio sarebbe fantastico.Socket.io chat app che può anche inviare immagini e anche file
6
A
risposta
5
Ho adattato l'esempio di chat ufficiale di Socket.io e aggiunto funzionalità di invio di file/immagini e anche video tramite codifica base64, è possibile dare un'occhiata al codice sorgente in client.js
e index.js
, di seguito sono i più rilevanti parte, spero sia utile per te.
Sul lato client:
$('#uploadfile').bind('change', function(e){
var data = e.originalEvent.target.files[0];
readThenSendFile(data);
});
function readThenSendFile(data){
var reader = new FileReader();
reader.onload = function(evt){
var msg ={};
msg.username = username;
msg.file = evt.target.result;
msg.fileName = data.name;
socket.emit('base64 file', msg);
};
reader.readAsDataURL(data);
}
Sul lato server:
socket.on('base64 file', function (msg) {
console.log('received base64 file from' + msg.username);
socket.username = msg.username;
// socket.broadcast.emit('base64 image', //exclude sender
io.sockets.emit('base64 file', //include sender
{
username: socket.username,
file: msg.file,
fileName: msg.fileName
}
);
});
Ecco il progetto:
Problemi correlati
- 1. nodejs e socket.io chat room
- 2. DDD Alternativa che disegna anche belle immagini di strutture dati
- 3. AngularJS: app di chat con socket.io su https
- 4. socket.io chat con stanze private
- 5. Creare un RPM che può anche manipolare file e aggiungere utenti
- 6. chiave esterna che può essere anche pari a zero
- 7. Socket.io Chat Tutorial non funziona correttamente
- 8. Implementazione della chat audio con Socket.IO e NodeJS
- 9. In che modo la mia app Parse.com può inviare un'email?
- 10. Progetto chat - bilanciamento carico con socket.io
- 11. Come inviare dati binari con socket.io?
- 12. app meteor: immagini non caricate
- 13. Rename-Item e sovrascrivere anche se esisto
- 14. Guarda per i file di progetto anche
- 15. programma non può funzionare OpenCV, anche se altri possono
- 16. Eclipse + Maven non può POM aperta anche se esiste
- 17. Socket.io come inviare l'oggetto JavaScript
- 18. non può nascondere Android tastiera software anche con InputManager
- 19. Ansible non può importare docker-py anche se è installato
- 20. ios 6 App sta ruotando, anche con shouldAutorotate: NO
- 21. Anche "Cancella dati" elimina l'app?
- 22. Trova amici Facebook dell'utente che usano anche la mia app per Android?
- 23. Un sito Web può anche essere una risorsa Web?
- 24. App di chiusura pulsante posteriore anche quando si utilizza FragmentTransaction.addToBackStack()
- 25. ASP.NET RangeValidator non può eseguire anche la matematica di base?
- 26. Will StreamWriter.Flush() chiama anche FileStream.Flush()?
- 27. Può Owin anche gestire le risposte nella sua pipeline
- 28. .Split ("//") sta prendendo anche "/"
- 29. jQuery ridimensionabile() e multipli anche Ridimensiona?
- 30. Anche il boxing e l'unboxing stanno trasmettendo?
sto avendo problemi di invio pdf 3MB ~ 4 MB per scaricare ! errore di rete! Ho bisogno di comprimere il file? il tuo codice invia base64 liberamente, sarebbe questo il problema? –
@ FábioZangirolami Funziona se si inviano file più piccoli come 1 MB o 100kb? Se è così potrebbe essere un problema con l'heartbeat, send.io invia heartbeat per verificare se l'utente è ancora connesso, se l'utente non risponde all'heartbeat in 60 secondi vengono disconnessi dal server. Il problema è che quando si invia un file, l'heartbeat è bloccato, quindi può succedere. – Arch1tect
I file più piccoli funzionano! Ho risolto il problema usando uploadfile invece di base64 .. tks !! –