簡體   English   中英

借助於socket.io從node.js發送圖像到html不起作用

[英]emitting image from node.js with help of socket.io to html does not work

在堆棧溢出的不同鏈接的幫助下,我遇到了以下代碼。 感謝您的每個鏈接。 但是我無法在HTML頁面中顯示圖像。

這是node.js代碼:

socketio.listen(server).on('connection', function (socket) {
    socket.on('message', function (msg) {
        console.log('Message Received: ', msg);
        socket.broadcast.emit('message', msg);
        fs.readFile(__dirname + '/Test.jpeg', function(err, buf) {
             socket.emit ('image', { image: true, buffer: buf.toString('base64') }); 
        }); // file reading.
    }); 
});

我將Test.jpeg保留在上述文件所在的文件夾中。

HTML文件是:

<html>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
  <body>
    <canvas id="myCanvas" width="280" height="220" style="border:1px solid #000000;">
    </canvas> 

    Incoming Chat: <ul id="incomingChatMessages"></ul>

    <input type="text" id="outgoingChatMessage">
  </body>
  <script src="/socket.io/socket.io.js"></script>
  <script>
        var ctx = document.getElementById('myCanvas').getContext('2d');
        $(function(){
            var iosocket = io.connect();

            iosocket.on('connect', function () {
                $('#incomingChatMessages').append($('<li>Connected</li>'));

                iosocket.on('message', function(message) {
                    $('#incomingChatMessages').append($('<li></li>').text(message));
                });

                iosocket.on('disconnect', function() {
                    $('#incomingChatMessages').append('<li>Disconnected</li>');
                });

                 iosocket.on('image', function(info) {
                $('#incomingChatMessages').append($('<li>image event..</li>'));

                     if ( info.image) {
                        var img = new Image();
                        img.src = 'data:image/jpeg;base64,' + info.buffer;
                        ctx.drawImage(img, 0, 0);
                      }
                   }); // image
           });


            $('#outgoingChatMessage').keypress(function(event) {
                if(event.which == 13) {
                    event.preventDefault();
                    iosocket.send($('#outgoingChatMessage').val());
                    $('#incomingChatMessages').append($('<li></li>').text($('#outgoingChatMessage').val()));
                    $('#outgoingChatMessage').val('');
                }
            });
        });
  </script>
  </head>
</html>

注意:此外,Test.jpg的尺寸為1280 * 720。

您檢查過info.buffer嗎? 來得好嗎? 您可以嘗試添加onload嗎?

var image = new Image();
image.src = "data:image/jpeg;base64,"+info.buffer;
image.onload = function() {
    ctx.drawImage(image, 0, 0);
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM