带有 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;
场景是这样的:
- 用户 1 和用户 2 加入
signalr
中心(基本上点击页面) - 如果用户 1 绘制了某些内容,它会"神奇地"出现在用户 2 的屏幕上,反之亦然 。
因此,请记住这一点,在此示例中,您必须执行以下操作:
- 捕获运动的坐标,并通过某种方法将这些值发送到
drawHub
。 - 在服务器端,该方法会将值传递给所有客户端,可能需要经过一些清理
- 所有客户端都将侦听/处理该方法以接收坐标并在画布上绘制线条。
希望这有帮助。