【问题标题】:Is there anyway to create Laravel Websocket Server without 3rd party solution?无论如何创建没有第 3 方解决方案的 Laravel Websocket 服务器?
【发布时间】:2022-11-04 08:38:48
【问题描述】:

我正准备构建一个 WebSockets 系统,以便通过 WebSockets 从我的服务器到我的客户端进行双向通信。

我知道 Laravel 现在很好地支持像 Pusher ChannelsAbly 这样的第三方。 还有一些其他的方式也很方便和简单,比如Laravel Websocketssoketilaravel-echo-server

但我的问题是客户端不能包含第 3 方客户端库.我的客户端是一个基于 Javascript 和 HTML5 的跨平台游戏。我可以只要通过WebSocket 将客户端连接到服务器端。 据我所知,在服务器端使用 3rd 方时,我应该使用他们的 JS 客户端库,例如 pusher/pusher-jslaravel/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


【解决方案1】:

我最近能够在 Laravel Websockets/广播频道之上实现这一点。 This is my SO answer on another question

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 2011-03-21
    • 2018-10-17
    • 2011-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多