我是一個初學者node.js和socket.io。 Socket.io開始支持1.0的二進制流,有沒有一個完整的例子,特別是圖像推送到客戶端和在畫布中顯示?謝謝Socket.io開始支持從1.0的二進制流,是否有一個完整的例子,特別是圖像
7
A
回答
16
的解決方案是一個有點複雜,但應該在Chrome,Firefox和IE10 +(不知道工作關於Opera和Safari):
某處的服務器端:
io.on('connection', function(socket){
fs.readFile('/path/to/image.png', function(err, buffer){
socket.emit('image', { buffer: buffer });
});
});
這裏是你如何處理它在客戶端上:
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;
});
與畫布ID :)
1
謝謝,@sovente,在這個1.0的介紹http://socket.io/blog/introducing-socket-io-1-0/,這是二進制支持的代碼片段。
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 });
});
});
我想知道如何處理客戶端上的緩衝,代碼是這樣的:
socket.on("image", function(image, buffer) {
if(image)
{
console.log(" image: ");
**// code to handle buffer like drawing with canvas**
}
});
0
從socket.io 1.0就可以發送二進制數據出發只需更換yourCanvasId
。 http://socket.io/blog/introducing-socket-io-1-0/
在官方文檔中,發送和接收二進制數據的方式不明確。唯一的文檔:
var socket = new WebSocket('ws://localhost');
socket.binaryType = 'arraybuffer';
socket.send(new ArrayBuffer);
我建議你看看這個答案,在這裏你可以找到代碼實現對服務器和客戶端(JavaScript的,JAVA):
https://stackoverflow.com/questions/34056705/how-to-send-binary-data-with-socket-io/
好部分原因是它也適用於Android!
乾杯
相關問題
- 1. 是否有云服務支持圖像特徵識別?
- 2. Rails二進制流支持
- 3. Google Chrome是否支持socket.io?
- 4. socket.io二進制支持文檔
- 5. Azure AppFabric是否真的支持AMQP 1.0?
- 6. SQLite是否支持參照完整性?
- 7. CouchDB是否支持參照完整性?
- 8. cv2是否接受二進制圖像?
- 9. socket.io流二進制數據
- 10. 是否有可能從一個特定的數字開始「appendListItem」?
- 11. 是否有任何支持CSS Grid System的完整寬度?
- 12. TFS 2015代理服務器是否支持Git?如果有,它是否具有完整的Git支持?
- 13. Subversion是否支持分支的別名
- 14. JavaFX是否支持RTSP流?
- 15. JPlayer是否支持RTSP流?
- 16. curl-loader是否支持HTTP 1.0?
- 17. 從二進制流顯示圖像
- 18. Foxx/ArangoDB服務器是否支持Socket.IO?
- 19. socket.io-redis是否支持redis集羣?
- 20. socket.io是否具有像sockjs一樣的原始WebSocket訪問?
- 21. mongodb是否開始提供帶有SSL支持的社區版?
- 22. 是否有一個像樣的IDE支持C intellisense但不支持C++?
- 23. 有完整的JavaScript支持
- 24. 是否支持構建庫二進制文件(.a/.so)?
- 25. 二進制堆是否支持減鍵操作?
- 26. Redstorm是否支持多個流
- 27. Recursivley測試二進制搜索樹是否完整
- 28. iPhone的SQLite實現是否支持完整的SQLite 3標準?
- 29. 是否有可能爲整個數據庫製作完整的遞歸別名?
- 30. MediaElement.js是否支持從Amazon S3進行流式傳輸?
我想你只需要讀取節點源上的斑點,然後將其發射到插座,所有的聽衆將獲得團塊。 在客戶端,我建議你用base64編碼它(或者如果你確信你不會有cpu問題,請將它編碼爲服務器端),然後按照這個指示操作:http://stackoverflow.com/questions/16449445/how- can-i-set-image-source-with-base64 – matteospampani