【发布时间】:2022-11-04 08:38:48
【问题描述】:
我正准备构建一个 WebSockets 系统,以便通过 WebSockets 从我的服务器到我的客户端进行双向通信。
我知道 Laravel 现在很好地支持像 Pusher Channels 和 Ably 这样的第三方。
还有一些其他的方式也很方便和简单,比如Laravel Websockets、soketi、laravel-echo-server。
但我的问题是客户端不能包含第 3 方客户端库.我的客户端是一个基于 Javascript 和 HTML5 的跨平台游戏。我可以只要通过WebSocket 将客户端连接到服务器端。
据我所知,在服务器端使用 3rd 方时,我应该使用他们的 JS 客户端库,例如 pusher/pusher-js、laravel/echo ...因此,如果我想将它们与 @ 一起使用,我找不到任何文档987654324@。
我的目标是为客户端和服务器端找到最佳和最合适的解决方案。
我试过什么?
IDEA 1:将 pusher.js 转换为我自己的 js
我花了两个星期的时间。我认为这是可能的,并且某些功能可能会起作用。但是,如果我想转换整个事情,这将需要很长时间。
IDEA 2:使用 Pusher 并通过 Pusher Channels Protocol 连接客户端
我已经对它们进行了如下测试
var socket = new WebSocket('ws://ws-[cluster_name].pusher.com:[port]/app/[key]');
有效。我可以在 Pusher 调试控制台上看到它们已连接。但是,我找不到任何有关订阅频道、侦听事件、向其他客户端发送消息、Ping、Pong 等基础知识的文档...
想法 3:使用Laravel Websockets
像想法 2 一样,我找不到任何文档或示例。
想法 4:使用 NodeJS 代替 Laravel。选择ws 包
我试过了,它按预期工作。 WS 非常简单,但这正是我想要的。但是我没有多年的 NodeJS 经验。因此,我觉得如果我选择它来构建一个新项目,会有很多风险。
你能告诉我解决这个问题的最佳方法吗?
谢谢
【问题讨论】:
-
请检查:laravel.com/docs/9.x/broadcasting 你错过了这部分:laravel-websockets 和 soketi 包为 Laravel 提供了 Pusher 兼容的 WebSocket 服务器。这些包允许您在没有商业 WebSocket 提供程序的情况下利用 Laravel 广播的全部功能。 -> 使用它们的文档实际上是相同的。
-
嗨@daniel-l,我之前已经阅读并测试过它们。
laravel-websockets实际上可以与传统的 Websocket 互操作。但是,他们确实记录了如何在客户端使用pusher-js。与link 相同
标签: javascript laravel websocket pusher pusher-js