js实现多人实时共享白板

js实现多人实时共享白板

js实现多人实时共享白板

在视频会议和远程一对一教学的过程中,我们经常要用到白板功能,大家打开白板页面,在白板上板书或标注,其他人都能看到,实时交互,以前要实现这个功能,要不安装一个软件,要不用flash实现,现在html5的发布,websocket的兴起,这个技术通过js就能实现,下面我们来演示讲解一下

一、对人共享白板原理

js中通过canvas将鼠标或手写板进行绘制,并将绘制的数据以对象的形式通过websocket实时发送到其他人的电脑canvas,就实现了白板共享了。

二、js白板插件

推荐canvas-designer-widget白板插件,支持铅笔、彩笔、橡皮擦、图片、pdf文件、移动、文字、放大缩小等功能,很强大,非常好用。代码如下,可以点右上角在线直接运行html代码预览。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>BFW NEW PAGE</title>
    <script id="bfwone" type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/bfwone.js"></script>
    <script type="text/javascript">
        bready(function() {
            use(["canvas-designer-widget"], function() {
                var designer = new CanvasDesigner();
                // both links are mandatory
                // widget.html will internally use widget.js
                designer.widgetHtmlURL = 'http://repo.bfw.wiki/bfwrepo/html/widget.html'; // you can place this file anywhere
                designer.widgetJsURL = 'http://repo.bfw.wiki/bfwrepo/js/widget.js'; // you can place this file anywhere
                designer.setSelected('pencil');
                designer.setTools({
                    pencil: true,
                    text: true,
                    image: true,
                    pdf: true,
                    eraser: true,
                    line: true,
                    arrow: true,
                    dragSingle: true,
                    dragMultiple: true,
                    arc: true,
                    rectangle: true,
                    quadratic: true,
                    bezier: true,
                    marker: true,
                    zoom: true,
                    lineWidth: true,
                    colorsPicker: true,
                    extraOptions: true,
                    code: true,
                    undo: true
                });
                designer.appendTo(document.getElementById("board"));
            });
        });
    </script>
    <style>
        * {
            padding: 0;
            margin: 0;
        }
    </style>
</head>
<body>
    <div id="board" style="width:100vw;height:100vh;"></div>
</body>
</html>

三、websocket共享

后端我们选用workerman,新建WsboardServer.php,代码如下

<?php
use Workerman\Connection\AsyncTcpC...

点击查看剩余70%

{{collectdata}}

网友评论0