所以我开始使用Redis和Socket.io向客户端广播事件。我使用Laravel作为后端,并将利用他们的事件功能。
根据用户的访问级别,我只希望他们收听某些频道。我想我可以动态设置他们将要收听的频道,但我担心他们是否可以使用调试工具或排序来改变他们正在收听的频道。
例如,也许该页面会加载收听' channel-100',但是他们可以改变代码,以便它可以收听任何其他频道,例如' channel-110&# 39;
答案 0 :(得分:2)
我不确定我是否可以专门帮助Socket.io,但我可以告诉你我们在实时系统中是如何处理的,这可能适用于你的问题。
客户可以请求附加到频道,因此它与您建议的内容相反,即客户决定他们听什么,服务器不会做出决定。见how channels attach.
现在,为了解决您对哪些客户端可以访问哪些渠道的担忧,您的Laravel应用程序应该发出一个令牌来指定它拥有的权限。由于您的Laravel应用程序负责身份管理并且知道用户是谁,因此随时都可以获得最新信息。因此,您的客户端应该从您的Laravel应用程序请求一个令牌,该令牌将传递给您的Socket.io服务器,然后该服务器应该应用规则来允许/禁止请求加入这些通道。这样,您的Socket.io服务器就不需要从您的系统中嵌入任何业务逻辑,并且在您的应用中发布令牌很容易。
请参阅how we made token authentication can work with your app。
我意识到这不是一个直接的答案,但我希望它能帮助你从架构上思考它。
Matt,联合创始人,Ably: simply better realtime