300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > canvas实现画板工具

canvas实现画板工具

时间:2021-04-30 08:44:49

相关推荐

canvas实现画板工具

花费大量时间(两周!!!!)制作了一款web端画图工具,可自由涂鸦、裁剪并移动裁剪区域位置、输入文字,包括橡皮擦、箭头工具、动作撤销/重做、保存,并通过websocket实现了画板内容同步,代码已分享,希望大家指正,同进步。

前端代码见附件huaban_v3.rar,后端websocket关键代码如下:

package com.lfwer.pinche.web;import java.util.Collections;import java.util.HashSet;import java.util.Set;import javax.websocket.CloseReason;import javax.websocket.EndpointConfig;import javax.websocket.OnClose;import javax.websocket.OnError;import javax.websocket.OnMessage;import javax.websocket.OnOpen;import javax.websocket.Session;import javax.websocket.server.ServerEndpoint;import org.ponent;@ServerEndpoint("/board")@Componentpublic class BoardSocket {private static Set<Session> peers = Collections.synchronizedSet(new HashSet<Session>());private static StringBuffer str = new StringBuffer();/*** 客户端有连接的时候就会调用这个方法*/@OnOpenpublic void open(Session session, EndpointConfig config) {peers.add(session);}/*** 客户端连接断开就会调用此方法*/@OnClosepublic void close(Session session, CloseReason reason) {peers.remove(session);}/*** 接收到客户端的信息* * @param msg* @param last*/@OnMessagepublic void message(Session session, boolean last, String msg) {if (!last) {str.append(msg);} else {str.append(msg);try {for (Session peer : peers) {if (!peer.equals(session)) {peer.getBasicRemote().sendText(str.toString());}}} catch (Exception e) {e.printStackTrace();}str = new StringBuffer();}}/*** 错误监听(当没有关闭socket连接就关闭浏览器会异常)*/@OnErrorpublic void error(Session session, Throwable error) {String id = session.getId();System.out.println("出错的session的id是" + id);}public BoardSocket() {System.out.println("Socket对象创建");// 通过对象的创建可以知道不同socket之间的通信不会共享成员变量}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。