node.js - 如何实现 Laravel、node.js、socket.io 和 redis 以使用数据库创建实时聊天/通知

标签 node.js laravel sockets redis socket.io

我已经花了 3 天时间阅读、观看有关 WebSockets、socket.io、node.js 等的教程。 基本上,我是一名 Laravel 开发人员,对所有其余组件只有一个基本概念。 遗憾的是,在这 3 天之后,我并没有想到实现这个架构的所有逻辑步骤。我将尝试解释我的理解,请您纠正我。

所以:
WebSockets - 是客户端和服务器之间的双向连续连接。它使用了另一个端口,基本上它不是 HTTP/S 连接。
要像我说的那样制作这种应用程序,我们还需要一台服务器,我知道为什么,但这是 Node.js。在这个 Node.js 服务器上,我们应该安装 socket.io(服务器端包)和 Redis
然后,我们需要添加客户端 socket.io(可能通过 CDN)。
Node.js 服务器上,我们正在创建一个 server.js 文件,其中需要我们需要的所有模块,例如 socket.io雷迪斯。我们为特定的未使用端口(如 6001)打开一个连接。然后我们运行这个 Node 服务器。
在前端,我们正在订阅-ing 到这个 channel 并定义emittinglistening 到服务器的方法。

例子:
User1 正在连接到特定路由。用户 2 也是如此。 User1 为 User2 键入一条消息,当按下提交时,来自 User1 的消息被发送到 Node.js 服务器,然后在 Redis 中发送(是?如果是 - 为什么? ),然后 Node.js 监听在这种情况下要做什么,并将此消息发送给特定用户,或者广播给除发布者以外的所有用户。

哦,这甚至很难解释,使用了太多的步骤和技术。 可以请有人纠正我的逻辑吗?我真的很想了解使用这些组件的所有过程和逻辑。或者请给我一些有用的文章和视频,可能我没有看到它们。谢谢!

最佳答案

我建议您阅读 official docs关于如何构建聊天。基本上,您最终将拥有 2 台服务器,一台用于您的 Laravel 应用程序,另一台用于 chat (Socket.io)。这样做的关键是使用广播器并监听两侧的事件,frontendbackend

Events are broadcast over "channels", which may be specified as public or private. Any visitor to your application may subscribe to a public channel without any authentication or authorization; however, in order to subscribe to a private channel, a user must be authenticated and authorized to listen on that channel.

关于node.js - 如何实现 Laravel、node.js、socket.io 和 redis 以使用数据库创建实时聊天/通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48926446/

相关文章:

javascript - 无法访问资源的 .id 值

javascript - 我无法从 sql 查询中读取值

javascript - 从基于另一个数组的数组中删除项目

php - laravel 中错误的时间戳

php - Laravel 5.2 和 Valet - 无法发送电子邮件 - 无法找到套接字传输 "plain"

java - 通过套接字使用 ObjectStreams 传输 Java key 对象

javascript - ionic 应用程序不会连接到 Socket.IO

php - 我可以在哪里存储数据库中每行更改的数组?

Android 应用程序在 WIFI 和 3G(无代理)上工作,但在 3G 上不工作(如果分配了代理和端口)

c# - 断开连接后再次开始使用 Socket 进行监听