提问人:Luca Reghellin 提问时间:11/14/2023 更新时间:11/15/2023 访问量:70
Socket.io Laravel 10?
Socket.io with Laravel 10?
问:
我正在学习一点 Laravel,并想尝试使用 Socket.io 的 websockets。我找到了几个嘟,但它们都已经很老了。 我看到的一件事是,现在 Laravel 建议将 Laravel Echo 放在客户端,而其他一些库(或多或少都是商业的)作为 Laravel 事件和客户端之间的“驱动力”。 Laravel曾经有过laravel-echo-server,但看看它的代码,我发现它仍然支持 Socket.io v2.3.0,而目前它是v4。所以我想我不能使用 laravel-echo-server。
所以我不能完全理解的是:
如果我想使用 socket.io,我真的需要 Laravel Echo 吗?
如果是,由于 laravel-echo-server 与 socket.io v4 不兼容,我还有什么可以使用的吗?还有其他方法吗?
Laravel 10 文档没有提到 Socket.io,也没有提到 laravel-echo-server。只有 Laravel Echo。 Laracasts 有一个非常古老的(2015 年)视频课程,其中解释了 redis socket.io。没有 Laravel Echo,也没有 laravel-echo-server。但现在是 2015 年。
那么,我现在应该如何行动呢?
答:
我之前在这个答案中已经谈到了这一点:为什么我们需要像 Pusher 和 Socket.io 这样的产品来建立 websocket 连接?
但基本上,是的,Laravel Echo Server 被放弃了,Laravel 自己的文档在描述如何最好地连接所有必要的部分以推出你自己的 Websocket 服务器方面做得不够。这是有充分理由的:在Laravel中使用自己的Websocket服务器和客户端实现并非易事,为了处理这个问题,您需要考虑许多事情。
此外,StackOverflow 上的一个答案将远远不足以涵盖您推出 Websocket 服务器和客户端所需的一切。
也就是说,最好的起点可能是开始研究 Laravel 如何注册其广播公司。
它们负责通过某种媒介将事件发送到Websocket服务器。当 Laravel Echo Server 真正出现时,Redis Broadcast Driver 经常被使用(在后台使用 predis/predis)使用 Redis 的发布/订阅通知以及负责管理这些事件的队列工作进程发送消息。
Laravel Echo Server 将依次订阅这些事件,并根据这些服务器事件向所有连接的客户端广播消息。
Socket.io Server API 文档提供了相当多的有价值的信息,介绍了如何设置许多基础知识,不仅包括侦听消息事件,还包括侦听 Redis 事件。
不幸的是,除此之外,我没有太多可以提供的东西,因为你的问题范围太广,无法涵盖所有可能的细节。希望这能给你一个良好的开端,当你更多地探索 Laravel 和 Websockets 如何相互协作时,你可以缩小范围。
评论