javascript - 如何清除所有连接客户端的画布?
问题描述
我打算在我的网站中集成一个白板画布,通过 Socket.io 连接到 NodeJS 服务器的用户可以在屏幕上协作绘制。从一个客户端绘图会发送到其他客户端的屏幕。出于演示目的,我使用 localhost。
唯一的问题是,当我集成清除功能时,它仅从当前用户的屏幕/画布中清除,但并非所有客户端都受到影响。
我相当新,我不太了解发射和广播的工作原理,但我尝试通过 socket.emit 进行发射,它传递了一个明确的函数,该函数向所有客户端广播。
<button type="button" onclick="clearCanvas()" id="btnClear">CLEAR</button>
function clearCanvas(){
context.clearRect(0, 0, canvas.width, canvas.height)
socket.emit('clear'), clearCanvas();
}
解决方案
你需要处理clear
事件。
<button type="button" onclick="emitAndCanvas()" id="btnClear">CLEAR</button>
function emitAndCanvas(){
socket.emit('clear');
clearCanvas();
}
function clearCanvas() {
context.clearRect(0, 0, canvas.width, canvas.height);
}
// this will handle the socket event and clears the canvas
socket.on('clear', clearCanvas);
推荐阅读
- c# - ServiceStack - SessionAs 导致 PreAuthenticate 被调用
- python - 如何按索引在多列中绘制带有散点图的数据框?
- javascript - 如何对纯二进制数据执行纯按位运算
- windows - Windows 10 中的 Robocopy 命令与德语字母(ü、ä、ö)作斗争,chcp 更改代码页显然没有效果
- codenameone - 代号一中的用户位置
- javascript - 删除输入类型数字的微调器后,为什么 mozila 允许用户输入字母值?
- intellij-idea - cucumber - 在 IntelliJ 中运行 Runner 时出现“测试被忽略”错误
- google-cloud-platform - 如何通过 REST API 自动创建 Dialogflow 代理
- excel - 浏览列并复制单元格
- vhdl - 7 段显示器上数字 0000 到 0099 的 VHDL 代码