0

我正在用 ASP.NET MVC 3 开发一个社交网络。每个用户都必须有能力看到连接的人。

做这个的最好方式是什么?

Contact我在我的数据库的表中添加了一个标志,并将其设置true为用户登录时并设置为false他注销时。

但是这个解决方案的问题是当用户关闭浏览器而不注销时,他仍然会保持连接状态。

4

1 回答 1

3

真正知道用户当前已连接的唯一方法是在用户和服务器之间保持某种连接。立即想到两个选项:

  1. 使用 javascript 使用 ajax 定期调用您的服务器。您将在您的服务器上有一个特殊的端点,用于更新“上次连接时间”状态,并且您将有第二个端点供用户轮询以查看谁在线。
  2. 使用websocket保持与服务器的持久连接

选项 1 应该很容易实现。要记住的主要事情是,这将增加进入服务器的请求数量,并且您必须相应地进行计划以处理可能产生的流量。您可以通过配置 javascript 计时器回调服务器的频率来控制服务器上的负载量。

如果您在没有库支持的情况下执行此操作,则选项 2 可能会涉及更多。当然,有一些库,比如SignalR,可以很容易地做到这一点。这也会影响您网站的性能,因为每个用户都将保持持久连接。这种方法的优点是它减少了像选项 1 那样的轮询需求。如果您使用这种方法,也很容易向用户 A 推送用户 B 已离线的消息。

我想我还应该提到一个非常简单的第三个选项。如果您觉得您的网站互动性很强,您可以跟踪他们上次向您的网站发出请求的时间。当然,这可能无法为您提供足够的准确性来确定用户是否“已连接”。

于 2012-11-01T12:23:35.103 回答