带有 asp 画布的信号器

本文关键字:信号器 asp 带有 | 更新日期: 2023-09-27 17:56:44

我正在尝试使用在asp中用javascript创建的画布(用于 asp.net 应用程序),并尝试与signalr建立连接。我对语法感到非常困惑。

    <%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="WB_api.aspx.cs" Inherits="WhiteBoard.WB_api" %>

<canvas id="canvas" width="600" height="500" style="border:1px solid #000000;" onmousemove="draw(event)" onmousedown="isReady(true,event)" onmouseup="isReady(false,event)"></canvas>
<select id="color">
    <option value="black">Black</option>
    <option value="Red">Red</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
    <option value="white">Eraser</option>
</select>
<select id="size">
    <option value="5">5</option>
    <option value="10">10</option>
    <option value="20">20</option>
    <option value="30">30</option>
    <option value="40">40</option>
</select>
<script src="Scripts/jquery.signalR-2.2.0.js"></script>
<!--Reference the autogenerated SignalR hub script. -->
<script src="~/signalr/hubs"></script>
<script type="text/javascript">
    // Declare a proxy to reference the hub by class name. 
    var drawHub = $.connection.drawHub;
    var canvas = document.getElementById("canvas");
    var ctx = canvas.getContext("2d");
    var pos;
    var ready;
    function draw(e) {
        var ink = document.getElementById("color").value;
        var size = document.getElementById("size").value;
        if (pos == undefined)
            pos = getMousePos(e);
        if (ready) {
            ctx.beginPath();
            ctx.strokeStyle = ink;
            ctx.lineWidth = size;
            ctx.moveTo(pos.mouseX, pos.mouseY);
            pos = getMousePos(e);
            ctx.lineTo(pos.mouseX, pos.mouseY);
            ctx.stroke();
        }
    }
    function getMousePos(ev) {
        var x = ev.clientX;
        var y = ev.clientY;
        return {
            mouseX: x,
            mouseY: y
        }
    }
    function isReady(r, e) {
        ready = r;
        pos = getMousePos(e);
    }
</script>

我已经开发了画布,它可以在没有信号器的情况下工作,但信号器集线器似乎不起作用。 而且我不知道在这之后该放什么来工作:

    var drawHub = $.connection.drawHub;

带有 asp 画布的信号器

场景是这样的:

  1. 用户 1 和用户 2 加入signalr中心(基本上点击页面)
  2. 如果用户 1 绘制了某些内容,它会"神奇地"出现在用户 2 的屏幕上,反之亦然

因此,请记住这一点,在此示例中,您必须执行以下操作:

  • 捕获运动的坐标,并通过某种方法将这些值发送到drawHub
  • 在服务器端,该方法会将值传递给所有客户端,可能需要经过一些清理
  • 所有客户端都将侦听/处理该方法以接收坐标并在画布上绘制线条。

希望这有帮助。