html画图web,基于html5 websocket和canvas的多人画图程序(你画我猜)

演示地址:http://letdraw.ap01.aws.af.cm/

项目代码:https://github.com/mz121star/WebsocketPaint

自己访问的话可以打开多个浏览器窗口体验,目前有个问题就是不能多人同时画,否则出现问题

1.[代码][JavaScript]代码

io.sockets.on('connection', function (socket) {

socket.emit('draw', { hello:'world' });

socket.on('draw', function (data) {

console.log(data);

socket.broadcast.emit('draw', data);

});

socket.on('set nickname', function (name) {

socket.set('nickname', name, function () {

//socket.broadcast.emit('add user',socket.manager.roomClients);

socket.emit('add user', socket.manager.roomClients);

socket.broadcast.emit('add user', socket.manager.roomClients);

//console.log(socket);

});

});

socket.on("msg", function (data) {

if (data.id) {

io.sockets.socket(data.id).emit("msg", socket.store.data.nickname + "对你说:" + data.msg)

}

else {

socket.broadcast.emit("msg", socket.store.data.nickname + "对大家说:" + data.msg);

}

});

});

2.[代码][JavaScript]代码

$("#graph").MPaint({

drawReady: function (e) {

socket.emit('draw', { sx: e.offsetX, sy: e.offsetY,color: $("#graph").MPaint.GetColor() });

},

drawBegin: function (e) {

socket.emit('draw', { ex: e.offsetX, ey: e.offsetY,color: $("#graph").MPaint.GetColor() });

snd.play();

},

drawEnd: function (e) {

}

});

3.[代码][JavaScript]代码

(function ($, window) {

var ctx;

$.fn.MPaint = function (opts) {

var opts = $.extend({}, $.fn.MPaint.defaults, opts), begin = false;

var _moveTo = function (e) {

begin = true;

ctx.beginPath();

ctx.moveTo(e.offsetX, e.offsetY);

opts.drawReady(e);

}

, _drawBegin = function (e) {

if (begin) {

ctx.lineTo(e.offsetX, e.offsetY);

ctx.stroke();

opts.drawBegin(e);

}

}

, _drawEnd = function (e) {

begin = false;

opts.drawEnd;

};

return this.each(function () {

var canvas = $(this);

if (canvas[0].getContext) {

ctx = canvas[0].getContext('2d');

ctx.strokeStyle = opts.BrushColor;

ctx.lineWidth = opts.BrushWidth;

ctx.lineJoin = opts.LineJoin;

}

canvas.on("mousedown", _moveTo);

canvas.on("mousemove", _drawBegin);

canvas.on("mouseup", _drawEnd);

})

};

var Methods = {

SetColor:function (color) {

ctx.strokeStyle = color;

},

GetColor:function (color) {

return ctx.strokeStyle ;

},

SetWidth:function(w){

ctx.lineWidth=w;

},

SaveImage:function(){

var data =ctx.canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");

window.location.href = data;

}

}

$.fn.MPaint.defaults = {

BrushColor:"#fff",

BrushWidth:5,

LineJoin:"round",

//mousedown

drawReady:function (e) {

},

//Mousemove

drawBegin:function (e) {

},

//mouseup

drawEnd:function (e) {

}

}

$.extend($.fn.MPaint,Methods);

})(jQuery, window)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Vue和WebSocket的多人在线聊天室是一种使用Vue框架搭建前端,并利用WebSocket技术实现实时通信的应用程序。在这个聊天室中,多个用户可以实时地发送和接收消息。 首先,使用Vue框架搭建前端界面。Vue框架提供了组件化的开发方式,可以方便地构建用户界面。通过Vue的指令和绑定,构建出聊天界面,包括用户列表、消息展示区和输入框。 然后,利用WebSocket技术实现实时通信。WebSocket是一种双向通信协议,可以在客户端和服务器之间建立持久的连接。在Vue中,可以使用WebSocket API来连接到服务器,并监听服务器发送的消息。当用户发送消息时,Vue会将消息发送给服务器,服务器再将消息广播给其他在线用户,实现多人聊天。 在聊天室中,用户可以实时看到其他用户发送的消息,并且可以即时回复。聊天室还可以提供其他功能,如图片和文件的发送与接收,表情的使用等。通过Vue的双向数据绑定,用户可以实时看到聊天室的最新状态。 为了保证安全性,可以使用一些认证和授权的机制。例如,用户在进入聊天室之前需要登录或注册,并提供有效的凭证。在服务器端,可以对每个连接进行身份认证,并进行权限控制,确保只有合法的用户可以参与聊天。 基于Vue和WebSocket的多人在线聊天室可以提供实时的通信功能,使用户可以方便地进行多人聊天和交流。这个应用程序可以在各种场景下使用,如团队协作、在线教育等,增加信息共享和沟通效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值