如何将实时流媒体页面限制为每个用户一个连接?

时间:2013-04-13 18:57:41

标签: javascript node.js connection streaming user-tracking

我想限制连接到我的实时流媒体页面的限制用户,这样用户就无法在不同位置共享密码并在同一帐户下多次登录。

我不介意一个用户登录家中的两个不同设备,例如计算机和Google TV。这让我觉得基于源IP地址的限制是处理这个问题的正确方法。

问题是,如果用户登录并记录其IP地址,并限制他们仅从该IP登录,则他们无法更改位置。

使用HTTP,在他们登录后,它是无连接的,所以我已经忘记了他们是否正在观看来自CDN的流。

这让我觉得如果用户登录到其他位置,我应该在客户端使用javascript来断开播放器。

这意味着我需要有一种以合理可扩展的方式与登录客户端进行通信的方法。

你能建议一个合适的方法来解决这个问题吗?我觉得必须有一个简单且可扩展的解决方案。

1 个答案:

答案 0 :(得分:1)

这实际上取决于您对绕过访问控制的人的敏感程度。

如果你对某些人绕过它们没问题,那么你可以在客户端执行访问控制,并让客户端每隔60秒左右ping一次服务器,告诉服务器它仍在流式传输。然后在服务器中,将用户的IP地址存储在过期队列中。因此,如果播放器停止对服务器执行ping操作,则IP地址将在队列中过期,例如3分钟。通过ping服务器,我的意思是发送一个简单的http GET请求来保持会话打开。当用户关闭客户端时,ping将停止,服务器将在3分钟后使该客户端的IP地址失效。此时,用户可以使用不同的IP地址登录。

重要的是要记住,精明的用户可以在Chrome等浏览器中观看网络活动,看看您的内容在何处投放,并轻松绕过任何限制,因为您无法控制CDN本身。 / p>

如果您需要更严格的控制,则需要提供服务器中的内容。然后,您将完全知道客户端何时停止访问流。

可能存在中间立场。如果你担心没有CDN的流媒体速度,你可以考虑看看CloudFlare.com。 CloudFlare是一个CDN层,位于所有http请求的前面,甚至是动态请求。静态请求从边缘提供,就像普通的CDN一样,但动态请求通过CloudFlare的网络反向代理,每次都返回到您的服务器。如果您将流式传输请求设置为CloudFlare的动态内容,那么您将获得通过低延迟,高带宽连接到边缘点的流式传输的潜在优势,同时仍然能够单独跟踪用户。