Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过套接字io发送画布内容_Javascript_Node.js_Socket.io_Html5 Canvas - Fatal编程技术网

Javascript 如何通过套接字io发送画布内容

Javascript 如何通过套接字io发送画布内容,javascript,node.js,socket.io,html5-canvas,Javascript,Node.js,Socket.io,Html5 Canvas,我只想在canvas标签中复制一个canvas元素,并在其他浏览器中通过socket.io实时发送它,以便绘制该元素 当我在发射器中编写此代码时 socket.emit('emit_to_draw',document.getElementById('canvas')) 元素为空 如何处理?您尝试的方法是在调用emit时发送整个canvas元素。为此,必须将画布上下文转换为base64 var canvas=document.getElementById('canvas').toDataURL(

我只想在canvas标签
中复制一个canvas元素,并在其他浏览器中通过socket.io实时发送它,以便绘制该元素

当我在发射器中编写此代码时

socket.emit('emit_to_draw',document.getElementById('canvas'))
元素为空


如何处理?

您尝试的方法是在调用emit时发送整个canvas元素。为此,必须将画布上下文转换为base64

var canvas=document.getElementById('canvas').toDataURL(); emit('emit_to_draw',canvas)


当用户收到这个canvas变量时,他必须在画布上绘制它。

您尝试的方法是在调用emit时发送整个canvas元素。为此,必须将画布上下文转换为base64

var canvas=document.getElementById('canvas').toDataURL(); emit('emit_to_draw',canvas)


当用户收到这个canvas变量时,他必须在画布上绘制它。

Send
dataURI
oversocket…我这样做了,但速度太慢了。我的画布是一个视频元素的副本(它是一个视频)。我为这个问题寻找了另一个解决方案:我怀疑有没有其他办法……现在你试图发送一个不起作用的元素。您可以使用toDataURL或getImageData,但它们都有自己的缺点。为什么不将视频url发送到每个客户端并使用视频元素并在本地重画呢?谢谢,这就是我所做的通过套接字发送
dataURI
…我这样做了,但速度会变慢。我的画布是一个视频元素的副本(它是一个视频)。我为这个问题寻找了另一个解决方案:我怀疑有没有其他办法……现在你试图发送一个不起作用的元素。您可以使用toDataURL或getImageData,但它们都有自己的缺点。为什么不把视频url发送到每个客户端,使用视频元素并在本地重画呢?谢谢,我就是这么做的