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

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

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

10个月前 评论
cooooler (楼主) 10个月前
忆往昔弹指间 (作者) 10个月前
wmhello 8个月前
wmhello 8个月前

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

10个月前 评论
sanders

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

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

10个月前 评论

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

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

10个月前 评论
cooooler (楼主) 10个月前
MArtian (作者) 10个月前

建议你用easyswoole

10个月前 评论

laravel的话gatewayworker蛮好用的

10个月前 评论

js链接就好了

10个月前 评论

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

10个月前 评论
bishi123 10个月前
我爱大可乐 (作者) 10个月前
bishi123 10个月前
梦想星辰大海

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

9个月前 评论
jiangjun

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

9个月前 评论

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

8个月前 评论

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