我正在做一个项目,我想为特定的用户组(具有管理员角色)实现实时通知,经过一些研究,我明白我需要 session 才能知道哪些用户已登录(默认情况下他们是匿名的)。
另外,我只需要向特定用户发送通知。 (只有一个用户,例如:John Doe)
所以,我的问题是:
如何通过 Redis 将 session /cookie 传输到 NodeJS 端,然后发出通知?
我到底应该怎么做?
任何加密/解密?
有人有机会实现这样的东西吗?
互联网上几乎没有关于此的信息,而且大多数教程对于我的用例来说都太基础了。
我正在使用 Laravel 5.1 广播功能来发布一些通知并使用 Socket.io(版本 1.3.7)实时显示它们。我还使用 Redis(版本 3)、NodeJS(版本 5)和 Express(版本 4.13)。
感谢阅读!
最佳答案
我一直在(缓慢地)使用 Autobahn 为 Web 应用程序实现类似的功能和 WAMP ,它是相关的协议(protocol)和路由器。我目前有大约五种不同的服务(一些用 PHP 编写,一些用 NodeJS 编写)加上所有实时通信的客户端。
WAMP 的优点在于它封装了远程过程调用 (RPC) 和发布/订阅 (PubSub) 模型以进行通信。
我的身份验证方案有点困惑:在 Laravel 网络应用程序的每个页面上,都有一个 token 值,该值对用户来说是唯一的,并在登录到 Laravel 应用程序时生成。当客户端连接到 WAMP 路由器时,Javascript 使用此 token 值进行身份验证 - 如果它是无效(或过时的) token ,则连接将被拒绝。
至于将通知限制到特定用户或组,一种简单的方法是将适当的 JS 代码包装在一个函数中,该函数仅在以下情况下被调用(或仅输出到 Blade 模板中的客户端)如果用户具有适当的权限。
最后,我的应用程序严格在我们的防火墙内使用,所以我没有研究使用加密/解密。
关于php - Laravel 5.1 Session 和 Socket.IO + Redis - 向登录(已知)用户和用户组发送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525593/