php - Laravel 5.1 Session 和 Socket.IO + Redis - 向登录(已知)用户和用户组发送通知

标签 php node.js redis socket.io laravel-5

我正在做一个项目,我想为特定的用户组(具有管理员角色)实现实时通知,经过一些研究,我明白我需要 session 才能知道哪些用户已登录(默认情况下他们是匿名的)。

另外,我只需要向特定用户发送通知。 (只有一个用户,例如:John Doe)

所以,我的问题是:

  1. 如何通过 Redis 将 session /cookie 传输到 NodeJS 端,然后发出通知?

  2. 我到底应该怎么做?

  3. 任何加密/解密?

有人有机会实现这样的东西吗?

互联网上几乎没有关于此的信息,而且大多数教程对于我的用例来说都太基础了。

我正在使用 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/

相关文章:

node.js - 我需要为 connect-redis 指定一个客户端吗?

php - 如何通过点击结帐按钮来更新产品数量的值?

javascript - jQuery - 将标签和复选框组限制为最大数量

javascript - 使用 npm 下载 jade 时出错(npm install -g jade)

javascript - 测试进程在开 Jest 中并行运行时终止 - "A worker process has quit unexpectedly!"

javascript - 快速处理程序中的 es6 和谐箭头函数

java - 使用分页从redis缓存中检索数据

sql-server - Redis 作为 RDBMS 的缓存

PHP xmlrpc 客户端和 Python 2.5 xmlrpc 服务器 : incomplete data and Connection reset by peer error

php - 金额的理想支付网关问题