热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php可以实现swoolewebsocket客户端吗?

问题描述背景:创建了websocket服务器对象,并且浏览器端可以与这个websocket服务器正常通信,正常监听到各种事件。业务需要:要实现服务器端

问题描述

背景 :创建了websocket服务器对象,并且浏览器端可以与这个websocket服务器正常通信,正常监听到各种事件。

业务需要:要实现服务器端主动给目标客户端发送消息。

解决方案:打算把php作为客户端,给服务端发送特定消息,服务端监听到后,推送给相应客户端。

在尝试的过程中,遇到了各种问题,详见如下代码及报错⬇️

//首先创建了websocket服务器对象,监听0.0.0.0:9502端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    $ws = new \swoole_websocket_server("0.0.0.0", 9502);

    $this->sw = $ws;

    //监听WebSocket连接打开事件

    $ws->on('open', function ($ws, $request) {

        $ws->push($request->fd, "hello, welcome\n");

    });



    $ws->on('connect', function ($ws, $fd){

        echo "Client:Connect. fd {$fd}\n";

    });



    $ws->on('receive', function ($serv, $fd, $reactor_id, $data) {

        echo "Client:Connect. fd : {$fd}\n";

        echo "Client:Connect. data: {$data}\n";

    });



    //监听WebSocket消息事件

    $ws->on('message', function ($ws, $frame) {

        echo "Message: {$frame->data}\n";

        echo "fd: {$frame->fd}\n";

    });



    //监听WebSocket连接关闭事件

    $ws->on('close', function ($ws, $fd) {

        echo "client-{$fd} is closed\n";

    });



    $ws->start();


之后开始尝试php作为客户端,连接websocket服务,并且发送消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//php客户端尝试 1

    $host = "127.0.0.1";

    $port = 9502;

    $client = new \swoole_websocket_server(SWOOLE_SOCK_TCP | SWOOLE_KEEP,SWOOLE_SOCK_SYNC);

    $timeout = 0.5;//超过与服务器交互的超时秒数会自动断开

    $client->connect($host, $port, $timeout);

    $client->send('XXXXXX');

   

    报错:Swoole\Server::__construct(): swoole_server only can be used in PHP CLI mode.

   

//php客户端尝试 2

    $client = new Swoole\Client(SWOOLE_SOCK_TCP | SWOOLE_SYNC);

    if (!$client->connect('127.0.0.1', 9502, 0.5))

    {

        exit("connect failed. Error: {$client->errCode}\n");

    }

    $client->send("hello world\n");

    $client->close();

   

    报错 : 服务端可以监听到 connect事件和close事件,无法监听到send 发送的内容

   

//php客户端尝试 3

    尝试安装官方文档给出的方法:

    apache/php-fpm或其他同步阻塞的PHP程序中可以使用swoole/framework提供的同步WebSocket客户端



    同步WebSocket客户端连接:https://github.com/matyhtf/framework/blob/master/libs/Swoole/Client/WebSocket.php

    代码:

    $service = new WebSocket($host,$port);//service 即为同步WebSocket客户端中的代码

    $send = $service->send('XXXXXX');//调用服务中的send方法

   

    报错:Class 'Swoole\Http\WebSocketParser' not found


期待

1
2
3
4
5
   有方法可以实现,php作为客户端,连接已经创建的webscoket服务,并且发送的消息在服务端可以监听到 。

   

   看到网上看到许多类似的问题,但是都没有很有效的答案。

   

   请问这个问题该如何解决呢 ?



推荐阅读
  • 本文介绍了如何使用Workman框架构建一个功能全面的即时通讯系统,该系统不仅支持一对一聊天、群组聊天,还集成了视频会议和实时音视频通话功能,同时提供了红包发送等附加功能。 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 深入浅出解析HTTP协议的核心功能与应用
    前言——协议是指预先设定的通信规则,确保双方能够按照既定标准进行有效沟通,从而实现准确的信息交换。例如,驯兽师通过拍手使动物坐下,这实际上是一种预设的协议。本文将详细探讨HTTP协议的核心功能及其广泛应用,解析其在现代网络通信中的重要作用。 ... [详细]
  • 使用Swoole的时候出现以下问题,如何解决呢?不是太懂,希望高手们能帮帮忙!谢谢了!是运行https://github.com/matyhtf/webim里的开源项目:matyh ... [详细]
  •  在使用PHP多年之后,我对PHP的优势和劣势已经非常清楚,与后起之秀Golang相比,两者已经不在一个重量级。 PHP更像是70kg级别的选手,脚本语言,极速开发,部署方便,性能 ... [详细]
  • 本文探讨了Web开发与游戏开发之间的主要区别,旨在帮助开发者更好地理解两种开发领域的特性和需求。文章基于作者的实际经验和网络资料整理而成。 ... [详细]
  • Redis安全防护深入解析
    本文详细探讨了如何通过指令安全、端口管理和SSL代理等措施有效保护Redis服务的安全性。 ... [详细]
  • JavaWeb技术架构解析
    本文探讨了JavaWeb开发中客户端与服务器端的交互模式,重点分析了B/S(浏览器/服务器)和C/S(客户端/服务器)两种架构的特点及应用场景。 ... [详细]
  • Java WebSocket 实时通信服务端实现
    本文介绍了一个基于Java的WebSocket实时通信服务端代码示例,包括客户端连接管理、消息接收与分发等功能。 ... [详细]
  • 本指南旨在帮助Swoole初学者快速掌握异步并发编程的基本概念和实践方法。通过实例演示,我们将使用Swoole PHP扩展构建一个简单的客户端与服务器模型,并实现基本的通信功能。首先,我们将从客户端的实现入手(文件名为:client.php)。 ... [详细]
  • 在CentOS 7上部署WebRTC网关Janus
    在CentOS 7上部署WebRTC网关Janus ... [详细]
  • 本文详细解析了JSONP(JSON with Padding)的跨域机制及其工作原理。JSONP是一种通过动态创建``标签来实现跨域请求的技术,其核心在于利用了浏览器对``标签的宽松同源策略。文章不仅介绍了JSONP的产生背景,还深入探讨了其具体实现过程,包括如何构造请求、服务器端如何响应以及客户端如何处理返回的数据。此外,还分析了JSONP的优势和局限性,帮助读者全面理解这一技术在现代Web开发中的应用。 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 前言昨天,在本地安装Swoole调试环境的时候,遇到好几个坑,因为我的电脑是Windows系统,所以安装的是c ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
author-avatar
宇智臣风
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有