php怎么向websocket服务端发送信息啊

搜不到这方面的教程啊,我想模拟 js 发送 wss 消息一样发送消息给其他 websocket 客户端
类似于 send (“wss://www.domain.com/",["type"=>"heart"]); 发送一条心跳消息的效果

我想要原生 php 或者 swoole 的
原生 php 可以通过 fopen 的方式发送消息,但是无法接受返回来的消息

本作品采用《CC 协议》,转载必须注明作者和本文链接
reading
白小二
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 13
composer require cboden/ratchet
<?php

require __DIR__.'/vendor/autoload.php';

use Ratchet\Client\WebSocket;

// 要连接的 WebSocket URL
$wsUrl = 'wss://your-websocket-url.com';

// 创建 WebSocket 客户端实例
$wsClient = new WebSocket($wsUrl);

// 连接事件处理
$wsClient->on('connect', function ($conn) {
    echo "已连接到 WebSocket 服务器\n";

    // 向服务器发送一条消息
    $conn->send('你好,服务器!');
});

// 消息事件处理
$wsClient->on('message', function ($msg) {
    echo "收到消息:$msg\n";
});

// 错误事件处理
$wsClient->on('error', function ($e) {
    echo "发生错误:{$e->getMessage()}\n";
});

// 关闭事件处理
$wsClient->on('close', function ($code = null, $reason = null) {
    echo "连接已关闭\n";
});

// 连接到 WebSocket 服务器
$wsClient->connect();
1年前 评论
Tomorrowxxy 3个月前

www.websocket-test.com/ 不知道你说的是不是这种 这个是可以直接在线测试的 填 websocket 服务端的地址就行

1年前 评论

直接在控制抬 new 一个 websocket 多快

1年前 评论

PHP 作为客户端要主动对服务端发消息,并且发送之后还要长时间保持长链接?

1年前 评论

原生意味着你要把 ws 协议实现一遍,何必去造轮子呢,我还是建议你用现成的,你可以看看 www.workerman.net/doc/workerman/fa...

1年前 评论

我之前的 websocket 服务端是用 node 写的,然后 laravel 通过 redis 与 socket 服务端进行通信,然后这样就可以实现 PHP 内部函数,接口之类的直接将数据发给 socket 服务端了,可以看下我之前写的那个文章,不确定是不是你想要的那种方式

1年前 评论
Junwind

PHP 原生方法,线上跑的项目也在用的,放心使用。

$client = stream_socket_client(ws服务地址);
if (!$client) {
    return;
}
$data = [ ... ];
fwrite($client, json_encode($cmd) . "\n");
fclose($client);
1年前 评论

file
进程模型附图
workerman 实现方式链接如下 www.workerman.net/q/508
不依赖于 onmessage 的 websocket 内部再套一层 tcp,http
不确定是不是你想要的那种方式
实现方式挺多的

1年前 评论

个人建议独立使用 workman 做 websocket 服务器,使用 GatewayWorker 能快速开发相关功能,前端通过调用 lLaravel 或者 tp 等 php 常规框架的接口,接口在调用 websocket 服务器,就能完美解决 websocket 通讯问题,实现了聊天室、客服,包括小程序中的各种实时交互与应用相关的功能。可以看 demo(https://element.wmhello.cn)

1年前 评论