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. 您实际得到的结果?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

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

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

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

1年前 评论
sanders

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

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

1年前 评论

如果你只是想要连接 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>

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

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

建议你用easyswoole

1年前 评论

laravel的话gatewayworker蛮好用的

1年前 评论

js链接就好了

1年前 评论

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

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

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

1年前 评论
jiangjun

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

1年前 评论

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

11个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!