ASP.NET MVC 5、SignalR 2.2.1 和会话。使用它们创建网络聊天
ASP.NET MVC 5, SignalR 2.2.1 and Sessions. Using them to create a web chat
我是 ASP.NET MVC 和 SignalR 的新手。我遵循了一些关于 MVC 和 SignalR 的教程来掌握基础知识。我搜索、阅读和测试,但没有针对我的问题。所以我会尝试从第一次开始就把所有的事情都解释清楚。我正在尝试使用 MVC 和 SignalR 创建一个网络聊天程序。似乎我无法理解 SignalR 和 MVC 的使用以及会话处理。
我需要跟踪用户会话并确定用户是否登录。
将会有创建聊天室的功能(仅限登录用户)。
选项 (1) 未登录用户:
未登录的用户只需输入姓名即可访问部分聊天室。他将无法创建新的聊天室。
选项 (2) 登录用户:
登录用户将能够创建聊天室。并加入任何其他聊天室。
问题:
新建聊天室应该如何完成?
- 在 运行 时间内动态创建新聊天室的视图?
- 创建一个静态视图,然后仅将其用于显示数据(我的意思是:对于所有用户和房间,我以编程方式确定哪个用户在哪个房间,过滤所有其他用户,所有对话,然后我显示该静态视图中特定房间中特定用户的内容...)?
- 还是别的?
如何检查用户是否登录?
- 与 SignalR 相关的登录用户检查如何/以及多少/?
- 如何实现加入聊天室?
- 我应该关注未登录用户的会话吗?
- 我真的需要那种应用程序到处都有会话,还是我只需要会话来确定用户是否登录?
- 我应该将消息直接存储到数据库中,还是在插入到数据库之前必须进行某种缓冲? (假设我有 60 万人同时聊天,直接插入数据库会导致数据库服务器 "overheat" 吗?)
我认为这是暂时的。如果出现问题我会编辑...
在此先感谢所有愿意帮助我的人。
同时提出的问题太多了。我会尝试更具体,否则您会得到模糊的答案。
关于主题,你需要了解SignalR authentication and authorization
基本上,您可以将 [Authorize]
属性添加到要保护的 CreateRoom
等方法。这些仅适用于登录用户。您不需要处理会话或进行任何检查,SignalR 会为您完成。
没有标记[Authorize]
的方法是"anonymous",意味着任何用户都可以调用它们。
How is the joining in a chat room accomplished?
您可以为每个房间保留一个静态客户端列表,并自行管理连接和断开连接。或者更好的是,您可以使用 SignalR groups.
有一个名为 Jabbr.net that is made with SignalR. You can grab the source code 的很棒(且高级)的工作聊天应用程序,您可以在那里找到所有答案
我认为您可能以某种方式错过了对 SignalR 的概念和功能的理解。
因此,您需要再检查一次 SignalR,因为它基本上用于在 .NET 中创建聊天应用程序。
您可以在 Internet 上搜索的内容有:
* 使用 SignalR 创建聊天应用程序。
* 使用 SignalR 创建群组聊天。
群组将帮助您管理授权和未授权用户聊天。
因此,这些搜索将为您的所有问题和理解提供最佳思路。
我是 ASP.NET MVC 和 SignalR 的新手。我遵循了一些关于 MVC 和 SignalR 的教程来掌握基础知识。我搜索、阅读和测试,但没有针对我的问题。所以我会尝试从第一次开始就把所有的事情都解释清楚。我正在尝试使用 MVC 和 SignalR 创建一个网络聊天程序。似乎我无法理解 SignalR 和 MVC 的使用以及会话处理。
我需要跟踪用户会话并确定用户是否登录。
将会有创建聊天室的功能(仅限登录用户)。
选项 (1) 未登录用户:
未登录的用户只需输入姓名即可访问部分聊天室。他将无法创建新的聊天室。
选项 (2) 登录用户:
登录用户将能够创建聊天室。并加入任何其他聊天室。
问题:
新建聊天室应该如何完成?
- 在 运行 时间内动态创建新聊天室的视图?
- 创建一个静态视图,然后仅将其用于显示数据(我的意思是:对于所有用户和房间,我以编程方式确定哪个用户在哪个房间,过滤所有其他用户,所有对话,然后我显示该静态视图中特定房间中特定用户的内容...)?
- 还是别的?
如何检查用户是否登录?
- 与 SignalR 相关的登录用户检查如何/以及多少/?
- 如何实现加入聊天室?
- 我应该关注未登录用户的会话吗?
- 我真的需要那种应用程序到处都有会话,还是我只需要会话来确定用户是否登录?
- 我应该将消息直接存储到数据库中,还是在插入到数据库之前必须进行某种缓冲? (假设我有 60 万人同时聊天,直接插入数据库会导致数据库服务器 "overheat" 吗?)
我认为这是暂时的。如果出现问题我会编辑...
在此先感谢所有愿意帮助我的人。
同时提出的问题太多了。我会尝试更具体,否则您会得到模糊的答案。
关于主题,你需要了解SignalR authentication and authorization
基本上,您可以将 [Authorize]
属性添加到要保护的 CreateRoom
等方法。这些仅适用于登录用户。您不需要处理会话或进行任何检查,SignalR 会为您完成。
没有标记[Authorize]
的方法是"anonymous",意味着任何用户都可以调用它们。
How is the joining in a chat room accomplished?
您可以为每个房间保留一个静态客户端列表,并自行管理连接和断开连接。或者更好的是,您可以使用 SignalR groups.
有一个名为 Jabbr.net that is made with SignalR. You can grab the source code 的很棒(且高级)的工作聊天应用程序,您可以在那里找到所有答案
我认为您可能以某种方式错过了对 SignalR 的概念和功能的理解。 因此,您需要再检查一次 SignalR,因为它基本上用于在 .NET 中创建聊天应用程序。
您可以在 Internet 上搜索的内容有: * 使用 SignalR 创建聊天应用程序。 * 使用 SignalR 创建群组聊天。
群组将帮助您管理授权和未授权用户聊天。
因此,这些搜索将为您的所有问题和理解提供最佳思路。