ASP.NET MVC 5,SignalR 2.2.1和Sessions。使用它们创建网络聊天

时间:2016-08-08 12:25:32

标签: c# asp.net-mvc session asp.net-mvc-5 signalr

我是ASP.NET MVC和SignalR的新手。我已经关注了一些关于MVC和SignalR的教程来捕捉基础。我搜索,阅读和测试,但没有具体到我的问题。因此,我将尝试从第一次清楚地解释一切。我正在尝试使用MVC和SignalR创建一个Web聊天程序。好像我无法理解SignalR和MVC的使用以及会话处理。

我需要关注用户会话并确定用户是否已登录。

将有创建聊天室的功能(仅适用于已登录的用户)。

选项(1)未登录用户:

未登录的用户必须只输入一个名称,然后才能访问某些聊天室。他将无法创建新的聊天室。

选项(2)登录用户:

登录用户可以创建聊天室。并加入任何其他聊天室。

问题:

  1. 如何完成新聊天室的创建?

    • 在运行时动态创建新聊天室的视图吗?
    • 创建一个静态视图,然后仅将其用于显示数据(我的意思是:对于所有用户和房间,我以编程方式确定哪个用户在哪个房间,过滤所有其他用户,所有对话和我显示内容对于静态视图中特定房间中的特定用户...)?
    • 还是其他什么?
  2. 如何检查用户是否已登录?

  3. 登录用户的检查与SignalR的关联方式是多少/以及多少?
  4. 如何加入聊天室?
  5. 我应该关注未登录用户的会话吗?
  6. 我真的需要在任何地方为这种应用程序提供会话,或者我只需要会话来确定用户是否已登录或未登录?
  7. 我应该直接将消息存储到数据库,还是在插入数据库之前必须先做某种缓冲? (可以说我有60万人同时聊天,会直接插入数据库导致数据库服务器“过热”吗?)
  8. 我认为现在就是这样。如果出现问题我会编辑...

    提前感谢所有愿意帮助我的人。

2 个答案:

答案 0 :(得分:2)

同时这些问题太多了。我会尝试更具体,否则你会得到模糊的答案。

关于主要问题,您需要了解SignalR authentication and authorization

基本上,您可以将[Authorize]属性添加到要保护的CreateRoom等方法中。这些仅适用于登录用户。您不需要处理会话或进行任何检查,SignalR将为您完成。

未标有[Authorize]的方法是“匿名的”,这意味着任何用户都可以调用它们。

  

如何加入聊天室?

您可以为每个房间保留一份静态客户列表,并自行管理连接和断开连接。或者更好的是,您可以使用SignalR groups

有一个名为Jabbr.net的真棒(和高级)工作聊天应用程序,它是用SignalR制作的。你可以抓住source code并找到那里的所有答案

答案 1 :(得分:1)

我想你可能错过了某种方式来理解SignalR的概念和功能。 因此,您需要再次检查 SignalR ,因为它基本上用于在.NET中创建聊天应用程序。

您可以通过互联网搜索的内容包括: *使用SignalR创建聊天应用程序。 *使用SignalR创建与群组的聊天。

群组将帮助您管理授权用户和未授权用户聊天。

因此,这些搜索将为您提供所有问题和理解的最佳选择。