博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一步一步学习SignalR进行实时通信_8_案例2
阅读量:6153 次
发布时间:2019-06-21

本文共 3505 字,大约阅读时间需要 11 分钟。

目录

一步一步学习SignalR进行实时通信_8_案例2

标签(空格分隔): SignalR


前言

这讲分析一个案例,在一个画板上画画实时在其他客户端上显示。

配置Hub

在Startup中进行配置:

public void Configuration(IAppBuilder app){    app.MapSignalR();}

建立DrawingHub

public class Drawing : Hub{    private const int BoardWidth = 300, BoardHeight = 300;    private static int[,] _buffer = new int[BoardWidth, BoardHeight];    public Task BroadcastPoint(int x, int y)    {        if (x < 0) x = 0;        if (x >= BoardWidth) x = BoardWidth - 1;        if (y < 0) y = 0;        if (y >= BoardHeight) y = BoardHeight - 1;        int color = 0;        int.TryParse(Clients.Caller.color, out color);        _buffer[x, y] = color;        return Clients.Others.DrawPoint(x, y, Clients.Caller.color);    }    public Task BroadcastClear()    {        _buffer = new int[BoardWidth, BoardHeight];        return Clients.Others.Clear();    }    public override Task OnConnected()    {        return Clients.Caller.Update(_buffer);    }}

用一个二位数组来缓存画板,一共就三个方法

  1. 当客户端连接时调用Update()方法刷新整个画板
  2. BroadcastClear()是点击清除按钮时讲整个画板擦出
  3. 最后一个就是画画方法,客户端按下鼠标画画时,调用该方法进行绘制。

页面

    Drawing board                        

页面非常简单,一个选择颜色的下拉框,一个画板,和一个清除按钮。

javascript

$(function () {//初始化    var colors = ["black", "red", "green", "blue", "yellow", "magenta", "white"];    var canvas = $("#canvas");    var colorElement = $("#color");    for (var i = 0; i < colors.length; i++) {        colorElement.append(            "

实现效果

dbab8c3019dd9f34.gif

结束语

简单的讲了一个小案例。

本文发布至

参考文献

转载于:https://www.cnblogs.com/Jack-Blog/p/4979507.html

你可能感兴趣的文章
Subversion使用Redmine帐户验证简单应用、高级应用以及优化
查看>>
Javascript Ajax 异步请求
查看>>
DBCP连接池
查看>>
cannot run programing "db2"
查看>>
mysql做主从relay-log问题
查看>>
Docker镜像与容器命令
查看>>
批量删除oracle中以相同类型字母开头的表
查看>>
Java基础学习总结(4)——对象转型
查看>>
BZOJ3239Discrete Logging——BSGS
查看>>
SpringMVC权限管理
查看>>
spring 整合 redis 配置
查看>>
redhat6.1下chrome的安装
查看>>
cacti分组发飞信模块开发
查看>>
浅析LUA中游戏脚本语言之魔兽世界
查看>>
飞翔的秘密
查看>>
Red Hat 安装源包出错 Package xxx.rpm is not signed
查看>>
编译安装mysql-5.6.16.tar.gz
查看>>
类与成员变量,成员方法的测试
查看>>
活在当下
查看>>
每天进步一点----- MediaPlayer
查看>>