C# signalR asp.net设置用户名和连接ID
我是新来的信号员(和JQuery:D)。。。。。我想设置一些用户名并将其映射到connectionId。。。在检查了一些示例后,这是我的代码。它怎么会不起作用。。。。。页面正在运行,但div id=“msg”保持不变 现在我只想在客户端页面上写下用户名和连接ID的列表 服务器C# signalR asp.net设置用户名和连接ID,c#,asp.net,signalr,signalr-hub,signalr.client,C#,Asp.net,Signalr,Signalr Hub,Signalr.client,我是新来的信号员(和JQuery:D)。。。。。我想设置一些用户名并将其映射到connectionId。。。在检查了一些示例后,这是我的代码。它怎么会不起作用。。。。。页面正在运行,但div id=“msg”保持不变 现在我只想在客户端页面上写下用户名和连接ID的列表 服务器 namespace SERVXZ { class UserConn { public string Usrname { set; get; } public string C
namespace SERVXZ
{
class UserConn
{
public string Usrname { set; get; }
public string ConnectionID { set; get; }
}
public class XZHUB : Hub
{
//public static ConcurrentDictionary<string, string> MyUsers = new ConcurrentDictionary<string, string>();
List<UserConn> ulist = new List<UserConn>();
public override Task OnConnected()
{
var us = new UserConn();
us.Usrname = Context.QueryString["username"];
us.ConnectionID = Context.ConnectionId;
ulist.Add(us);
// var username = Context.QueryString["username"];
// MyUsers.TryAdd(Context.ConnectionId,username);
return base.OnConnected();
}
public void Send()
{
Clients.All.broadcastMessage(ulist[0]);
}
}
}
namespace SERVXZ
{
类UserConn
{
公共字符串Usrname{set;get;}
公共字符串连接ID{set;get;}
}
公共类XZUB:Hub
{
//公共静态ConcurrentDictionary MyUsers=新ConcurrentDictionary();
List ulist=新列表();
已连接的公用覆盖任务()
{
var us=new UserConn();
us.Usrname=Context.QueryString[“用户名”];
us.ConnectionID=Context.ConnectionID;
ulist.Add(美国);
//var username=Context.QueryString[“username”];
//MyUsers.TryAdd(Context.ConnectionId,用户名);
返回base.OnConnected();
}
公共无效发送()
{
Clients.All.broadcastMessage(ulist[0]);
}
}
}
客户
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Main.aspx.cs" Inherits="SERVXZ.Main" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label ID="USR" runat="server" Text="UserName"></asp:Label>
<br />
<asp:Button ID="SUB" runat="server" OnClick="SUB_Click" Text="Submit" />
<div id="msg">HERE</div>
<script src="Scripts/jquery-3.1.1.js"></script>
<script src="Scripts/jquery.signalR-2.2.2.js"></script>
<script src="/signalr/hubs"></script>
<script type="text/javascript">
$(function () {
var con = $.connection.XZHUB;
$('#msg').text("test");
$.connection.hub.qs = { 'username': 'rooz' };
con.client.broadcastMessage = function (msg) {
var enmsg = $('<dive />').text(msg).html();
$('#msg').append('<div>'+enmsg+'</div>');
};
$.connection.hub.start().done(function () {
$('#SUB').click(function () {
con.server.send();
});
});
});
</script>
</div>
</form>
</body>
</html>
在这里
$(函数(){
var con=$.connection.XZHUB;
$('#msg')。文本(“测试”);
$.connection.hub.qs={'username':'rooz};
con.client.broadcastMessage=函数(msg){
var enmsg=$('').text(msg.html();
$('#msg')。追加(''+enmsg+'');
};
$.connection.hub.start().done(函数(){
$('#SUB')。单击(函数(){
con.server.send();
});
});
});
提前感谢………:)问题在于中心名称。如果不设置集线器名称,将使用名称
xZHUB
生成集线器名称
所以你可以做两件事:
使用默认名称:
var con = $.connection.xZHUB;
或者更改中心名称
[HubName("XZHUB")]
public class XZHUB : Hub
您还需要检查其他事项:
集线器不是静态的,因此将在每次调用中重新创建ulist
。你应该考虑使它静止或改变逻辑。
“SUB”按钮将生成一个post,因此无法工作。我用一个普通按钮替换了它:
<button ID="SUB">Submit</button>
提交
问题在于集线器名称。如果不设置集线器名称,将使用名称xZHUB
生成集线器名称
所以你可以做两件事:
使用默认名称:
var con = $.connection.xZHUB;
或者更改中心名称
[HubName("XZHUB")]
public class XZHUB : Hub
您还需要检查其他事项:
集线器不是静态的,因此将在每次调用中重新创建ulist
。你应该考虑使它静止或改变逻辑。
“SUB”按钮将生成一个post,因此无法工作。我用一个普通按钮替换了它:
<button ID="SUB">Submit</button>
提交
能否在浏览器中打开开发人员工具?我打赌您会遇到一些javascript错误。我还建议您向中心添加一个中心名称,类似于[HubName(“XZUB”)]
uncaughtTypeError:无法读取HTMLDocument中未定义的属性“client”。(Main.aspx:35)在mighthrow(jquery-3.1.1.js:3570)在process(jquery-3.1.1.js:3638)这是来自开发人员工具的错误…:|您是否将/signal/hubs
添加为javascript源代码?能否在浏览器中打开开发人员工具?我打赌您会遇到一些javascript错误。我还建议您向中心添加一个中心名称,类似于[HubName(“XZUB”)]
uncaughtTypeError:无法读取HTMLDocument中未定义的属性“client”。(Main.aspx:35)在mighthrow(jquery-3.1.1.js:3570)在process(jquery-3.1.1.js:3638)这是开发人员工具的错误…:|您是否将/signalr/hubs
添加为javascript源代码?