laravel如何连接websocket并接受消息

1. 运行环境#

1). 当前使用的 Laravel 版本?#

laravel10

2). 当前使用的 php/php-fpm 版本?#

PHP 版本:8.1

php-fpm 版本:

3). 当前系统#

4). 业务环境#

5). 相关软件版本#

2. 问题描述?#

我需要连接到 websocket 来获取数据,并且我只需要连接对方的 websocket,不需要自己创建 websocket 服务,请问最简单的实现方案是什么

3. 您期望得到的结果?#

能够连接 websocket,且能接受对方 websocket 发送的消息即可

4. 您实际得到的结果?#

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

用 workerman,可单独使用,也可内嵌入 laravel

2年前 评论
cooooler (楼主) 2年前
忆往昔弹指间 (作者) 2年前
wmhello 1年前
wmhello 1年前
讨论数量: 21

用 workerman,可单独使用,也可内嵌入 laravel

2年前 评论
cooooler (楼主) 2年前
忆往昔弹指间 (作者) 2年前
wmhello 1年前
wmhello 1年前

那就需要写一个 websocket 客户端程序去去接收消息;想直接自己写可以看这篇 博客:老司机带你用 PHP 实现 Websocket 协议 在 laravel 中 还有一个 ratchet 扩展 10 里面我不知道能不能用 blog.csdn.net/qq_36901092/article/... 其他还有 Swoole、workerman 等框架

2年前 评论
sanders

如果用 laravel 的广播的话,应该就不行了,广播几乎是单向的,除了订阅那一下子是去授权接口走一遭,其他的通讯基本上都是服务器端动触发的。

如果不用广播倒是可以,那就需要自己基于 socket.io 之类的协议之上自己定义前后端沟通的消息格式,再通过命令行调用或者 redis sub/pub 的方式与 laravel 程序进行交互。

2年前 评论

如果你只是想要连接 Websocket 根本也用不到 Laravel,一个 Html 页的 Script 就可以了

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>WebSocket Demo</title>
  </head>
  <body>
    <h1>WebSocket Demo</h1>
    <p id="log"></p>
    <form>
      <label for="message">Send message:</label>
      <input type="text" id="message">
      <button type="button" onclick="sendMessage()">Send</button>
    </form>
    <script>
      var ws = new WebSocket("ws://localhost:8080");

      ws.onopen = function() {
        log("Connected to WebSocket server!");
      };

      ws.onmessage = function(event) {
        log("Received message: " + event.data);
      };

      function sendMessage() {
        var message = document.getElementById("message").value;
        ws.send(message);
        log("Sent message: " + message);
      }

      function log(message) {
        var logField = document.getElementById("log");
        logField.innerHTML = logField.innerHTML + "<br>" + message;
      }
    </script>
  </body>
</html>

然后你在浏览器里打开就行了,就这么简单。

2年前 评论
cooooler (楼主) 2年前
MArtian (作者) 2年前

建议你用 easyswoole

2年前 评论

laravel 的话 gatewayworker 蛮好用的

2年前 评论

js 链接就好了

2年前 评论

我也是刚接触,最近刚完成一个相关项目。就直接在 laravel 项目里安装 workman 就行。然后新建一个 command 文件和 Event 文件就行。推送消息直接用内置的就行。

2年前 评论
bishi123 2年前
我爱大可乐 (作者) 2年前
bishi123 2年前
梦想星辰大海

问答:Laravel 有 WebSocket 客户端的组件吗? 可以看看这个,我实现了在 laravel 下搞个 websocket 客户端。

2年前 评论
jiangjun

为啥对方的 websocket 不调你的 http 接口呢,你不应该因为一个接口就开一个 websocket 服务。

2年前 评论

许多项目我都是独立使用 workman 做 websocket 服务器,使用 GatewayWorker 能快速开发相关功能,集成到 laravel 或者 tp 等 php 常规框架一起使用,能完美解决 websocket 通讯问题,实现了聊天室、客服,包括小程序中的各种实时交互与应用相关的功能。可以看 demo(https://element.wmhello.cn)

1年前 评论