gpt4 book ai didi

asp.net - 获取连接到服务器的在线用户的名称

转载 作者:行者123 更新时间:2023-12-02 22:21:23 25 4
gpt4 key购买 nike

我是 asp.net 的新手。我经历过这个 link其中展示了如何计算使用 asp.net 连接到服务器的在线用户数。 (当我尝试时它正在工作)

我的问题是:我应该对该代码 (Global.asax) 进行哪些更改,以便它显示已连接用户的所有名称,而不是对它们进行计数。

我创建了一个聊天应用程序,它将连接用户的名称存储在 js 文件中的变量 chatUsername 中,如下所示:

js文件

   var chatUsername = window.prompt("Enter Username:", "");
//
chat.client.addMessage = //Function
//
chat.server.send(chatUsername);

.aspx.cs 文件

//Using SignalR (I think this doesnt matter)
public class Chat : Hub
{
public void Send(string from)
{
// Call the addMessage method on all clients
Clients.All.addMessage(from);
}
}

你可以找到我的完整代码 here

编辑:请提供一个仅与 asp.netsignalr 相关的简单示例(没有其他技术,如 MVC)

请帮忙。

最佳答案

编辑:以下代码指的是 SignalR v0.5,而不是最新的 1.0Alpha2,但我相信推理是一样的

为此,您需要在服务器和客户端中向 SignalR 连接过程添加几个步骤:

在服务器端:

  1. 例如,在应用程序启动时,您可以实例化一个静态内存存储库(可以是 的字典),它将作为用户存储库来存储所有当前连接的用户。
  2. 在 hub 中,您需要处理 Disconnect 事件(当用户断开连接时,也需要从用户存储库中删除)并通知所有其他客户端该用户已断开连接
  3. 在 hub 中,您需要添加两个新方法(名称可以是您想要的任何名称),以帮助客户端连接到系统并获取当前连接的用户列表:
    1. GetConnectedUsers() 仅返回已连接用户的集合
    2. Joined() 集线器将创建一个新用户,使用存储在往返状态中的信息(客户端选择的用户名)和 SignalR 连接 ID,并将新创建的用户添加到内存中存储库。

在客户端:首先,您需要实例化与服务器端集线器相关的 javascript 对象

var chat = $.connection.chat;
chat.username = chatUsername;

然后实现集线器将调用的所有函数并最终连接到集线器:

    // Step 1: Start the connection
// Step 2: Get all currenlty connected users
// Step 3: Join to the chat and notify all the clients (me included) that there is a new user connected
$.connection.hub.start()
.done(function () {
chat.getConnectedUsers()
.done(/*display your contacts*/);
});
}).done(function () {
chat.joined();
});
});
});

如果你问为什么我们需要添加一个像“chat.joined()”这样的阶段是因为在处理连接事件的集线器上的方法中,往返状态还不可用,所以集线器无法检索用户选择的用户名。

无论如何,我写了一篇博文来更详细地展示如何使用 Asp.Net MVC 创建一个基本的 SignalR 聊天网络应用程序,它可以在以下位置找到: http://thewayofcode.wordpress.com/2012/07/24/chatr-just-another-chat-application-using-signalr/

在帖子中,您还将找到发布源代码的 github 存储库的链接。我希望这会有所帮助。

瓦莱里奥

关于asp.net - 获取连接到服务器的在线用户的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13678493/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com