Socket.io Laravel 10?

Socket.io with Laravel 10?

提问人:Luca Reghellin 提问时间:11/14/2023 更新时间:11/15/2023 访问量:70

问:

我正在学习一点 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 年。

那么,我现在应该如何行动呢?

PHP Laravel WebSocket socket.io Laravel-10

评论


答:

1赞 maiorano84 11/15/2023 #1

我之前在这个答案中已经谈到了这一点:为什么我们需要像 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 如何相互协作时,你可以缩小范围。

评论

0赞 Luca Reghellin 11/16/2023
谢谢!我认为目前在没有商业工具的情况下在 Laravel 中使用 websockets 的最佳方式可能是 Sokety,它(几乎)免费,如果真的需要,至少可以提供付费支持。但它使用 uWebSockets.js而不是 Socket.io。