görüntü için tam bir örnek var node.js ve socket.io'da yeni bir başlangıç yapıyorum. Socket.io, 1.0'dan gelen ikili akışı desteklemeye başladı, özellikle istemciye resim bastırma ve tuvalde gösterme için tam bir örnek var mı? TeşekkürlerSocket.io 1.0'dan ikili akışı desteklemeye başladı, özellikle
cevap
çözüm biraz karmaşık ama Chrome, Firefox ve IE10 + (emin değilim içinde çalışması gerekir
io.on('connection', function(socket){
fs.readFile('/path/to/image.png', function(err, buffer){
socket.emit('image', { buffer: buffer });
});
});
: sunucu tarafında
Somewhere: Opera ve Safari) hakkında Burada
Ve eğer bir istemci üzerinde hallederim nasıl:
socket.on('image', function(data) {
var uint8Arr = new Uint8Array(data.buffer);
var binary = '';
for (var i = 0; i < uint8Arr.length; i++) {
binary += String.fromCharCode(uint8Arr[i]);
}
var base64String = window.btoa(binary);
var img = new Image();
img.onload = function() {
var canvas = document.getElementById('yourCanvasId');
var ctx = canvas.getContext('2d');
var x = 0, y = 0;
ctx.drawImage(this, x, y);
}
img.src = 'data:image/png;base64,' + base64String;
});
Sadece tuval id :)
Teşekkürler, @CuriousGuy, ama ben her zaman "Uncaught TypeError: undefined '' buffer 'özelliği okunamıyor ve istemci tarafında hiçbir görüntü okunamıyor. – guoleii
Etkinliğinizi bu gibi sunucudan yaymıyor musunuz: 'socket.emit ('image');'? Eğer öyleyse, bunu böyle yapmaya çalışın: 'socket.emit ('image', {buffer: buf});' – Curious
oh, benim hatam, teşekkürler, @CuriousGuy, işe yarıyor. – guoleii
teşekkürler, @ bu 1.0 tanıtımında http://socket.io/blog/introducing-socket-io-1-0/ @sovente, bu ikili destek kod snippet'i.
var fs = require('fs');
var io = require('socket.io')(3000);
io.on('connection', function(socket){
fs.readFile('image.png', function(err, buf){
// it's possible to embed binary data
// within arbitrarily-complex objects
socket.emit('image', { image: true, buffer: buf });
});
});
i istemci tarafında tampon nasıl işleneceğini bilmek istiyorum, kodlar gibidir:
socket.on("image", function(image, buffer) {
if(image)
{
console.log(" image: ");
**// code to handle buffer like drawing with canvas**
}
});
o ikili veri göndermek mümkündür 1.0 socket.io başlayarak ile yourCanvasId
değiştirin. http://socket.io/blog/introducing-socket-io-1-0/
Resmi belgelerde ikili veri gönderme ve alma şekli net değil. Sadece belgeler geçerli:
var socket = new WebSocket('ws://localhost');
socket.binaryType = 'arraybuffer';
socket.send(new ArrayBuffer);
Ben size sunucu ve istemci (javascript, java) için kod uygulaması bulabilirsiniz bu cevap, bir göz atın öneririm:
https://stackoverflow.com/questions/34056705/how-to-send-binary-data-with-socket-io/
iyi bölüm de Android'de çalışır!
Alkış
- 1. Oracle ne zaman "top" u desteklemeye başladı? PRODUCT'den p2_.PRODUCT_ID?
- 2. Benim socket.io kodunda socket.io
- 3. socket.io,
- 4. akışı
- 5. özellikle CJK
- 6. Erlang File I/O: Büyük ikili dosyalar ve gzip akışı
- 7. android akışı sunucuya ses akışı
- 8. socket.io örnek
- 9. socket.io firefox
- 10. Ben bu komutla BrowserSync başladı
- 11. Bir ikili ikili düzenleyiciden ağ bayt sırasını nasıl dönüştürebilirim?
- 12. Android uygulama kontrol akışı?
- 13. Pydev + Django - Özellikle ithalat
- 14. Özellikle java düzenli ifade
- 15. Meteor eğiticileri (özellikle Ubuntu'da)
- 16. ckeditor özellikle bölüm
- 17. Yangın Özellikle saha
- 18. socket.io yavaş ve yanıt vermiyor
- 19. AVAudioRecorder kayıt akışı ses akışı
- 20. socket.io ile bir istemciye nasıl mesaj gönderilir
- 21. Bir nodejs server + socket.io üzerinden bir mp3 dosyasından senkronize olarak müzik akışı yapın
- 22. Socket.io Güvenlik Sorunları
- 23. Denetleyicilerinde socket.io kullanın
- 24. Socket.io, Express denetleyicilerinden yayar
- 25. SignalR veya NodeJS/Socket.IO?
- 26. Socket.io sunucuyla bağlan çevrimdışı
- 27. Bellek sızıntısı socket.io + node.js
- 28. Socket.io, kendinize mesajlar
- 29. Socket.io - Hangi oda soketinin
- 30. Node.js & Socket.IO - Odalar sorunu
Ben sadece düğüm kaynağına damla okuyup sonra sokete onu yayarlar gerek, bütün dinleyiciler damla alacaktır. İstemci tarafında base64'te kodlamanızı öneririm (veya cpu sorunlarınız olmayacağından eminseniz sunucu tarafını kodlayın) ve sonra şu yönergeleri izleyin: http://stackoverflow.com/questions/16449445/how- can-i-set-image-source-with-base64 – matteospampani