【发布时间】:2016-11-15 16:56:27
【问题描述】:
我正在为我的网站编写聊天室页面,但遇到了一些障碍。我想确保聊天室参与者使用的名称是唯一的。集线器类本身包含一个列表,其中包含已经参与聊天的参与者,因此我向该类添加了一个方法来检查是否存在已使用的名称:
public bool UserNameInUse(string name)
{
UserDetail item = ConnectedUsers.FirstOrDefault(x => x.UserName == name);
return (item.ConnectionId == null);
}
在 Javascript 方面,我正在尝试调用 hub 方法以在开始连接之前检查名称是否已被使用,如下所示:
$("#btnStartChat").click(function () {
var name = $("#txtNickName").val();
if (name.length > 0) {
var status = chatHub.server.userNameInUse(name);
alert(status);
if (status!=1)
chatHub.server.connect(name);
else
alert("The name you chose is already in use. Try a different one, please.");
}
else {
alert("Please enter a name to use for this chat.");
}
});
如您所见,我对调用进行了检测以查看返回的内容。但不是从集线器方法调用中获取值 (确实触发,因为我在调试模式下在 Visual Studio 中对其进行了测试),这是我从警报框中得到的:
我尝试将返回类型更改为字符串并将文本发送回 int 并返回一个数字,但每次运行代码时都会得到相同的结果。谁能帮我理解为什么调用没有返回值?
【问题讨论】:
标签: javascript c# asp.net webforms signalr