研究讯飞星火模型的时候,使用websocket的一个总结

news2024/11/18 7:41:27

接受数据

<?php
header("Content-Type:text/html;charset=utf-8");
    //确保在连接客户端时不会超时
    set_time_limit(0);
     
    //设置IP和端口号
    $address = "wss://tts-api.xfyun.cn/v2/tts?authorization=YXBpX2tleT0iNDE4ZjJjOTI2NTY0YTc1ZDNjMmE5NDliMTE0MzRkZTYiLCBhbGdvcml0aG09ImhtYWMtc2hhMjU2IiwgaGVhZGVycz0iaG9zdCBkYXRlIHJlcXVlc3QtbGluZSIsIHNpZ25hdHVyZT0iUEcvdXVNeFlqa1ZKTzdhS2xCcENGeFozQS8yc3hKRXpENWEwQkZiUlc1dz0i&date=Fri%2C+05+May+2023+10%3A43%3A39+GMT&host=tts-api.xfyun.cn";
    $port = 8080; //调试的时候,可以多换端口来测试程序!
     
    /**
     * 创建一个SOCKET
     * AF_INET=是ipv4 如果用ipv6,则参数为 AF_INET6
     * SOCK_STREAM为socket的tcp类型,如果是UDP则使用SOCK_DGRAM
    */
    $sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //阻塞模式
    socket_set_block($sock) or die("socket_set_block() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //绑定到socket端口
    $result = socket_bind($sock, $address, $port) or die("socket_bind() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    //开始监听
    $result = socket_listen($sock, 4) or die("socket_listen() 失败的原因是:" . socket_strerror(socket_last_error()) . "/n");
    echo "OK\nBinding the socket on $address:$port ... ";
    echo "OK\nNow ready to accept connections.\nListening on the socket ... \n";
    do { // never stop the daemon
     //它接收连接请求并调用一个子连接Socket来处理客户端和服务器间的信息
     $msgsock = socket_accept($sock) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n");
       
     //读取客户端数据
     echo "Read client data \n";
     //socket_read函数会一直读取客户端数据,直到遇见\n,\t或者\0字符.PHP脚本把这写字符看做是输入的结束符.
     $buf = socket_read($msgsock, 8192);
     echo "Received msg: $buf \n";
       
     //数据传送 向客户端写入返回结果
     $msg = "welcome \n";
     socket_write($msgsock, $msg, strlen($msg)) or die("socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n");
     //一旦输出被返回到客户端,父/子socket都应通过socket_close($msgsock)函数来终止
     socket_close($msgsock);
    } while (true);
    socket_close($sock);
 
?>

发送数据


<?php
// header("Content-Type:text/html;charset=utf-8");
// 创建一个socket对象

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);



// 连接到星火模型的API地址和端口

$api_address = 'wss://spark-api.xf-yun.com/v1.1/chat'; // 请替换为实际的API地址

$api_port = 8080; // 请替换为实际的API端口

$result = socket_connect($socket, $api_address, $api_port);

if ($result === false) {

    echo "连接失败: " . socket_strerror(socket_last_error($socket)) . PHP_EOL;

} else {

    echo "连接成功" . PHP_EOL;

}



// 发送请求数据

$request_data = '{"action": "query", "format": "json", "meta": {"siteinfo": {"generator": "PHP"}}}'; // 请根据实际情况修改请求数据

$send_result = socket_write($socket, $request_data, strlen($request_data));

if ($send_result === false) {

    echo "发送请求失败: " . socket_strerror(socket_last_error($socket)) . PHP_EOL;

} else {

    echo "发送请求成功" . PHP_EOL;

}



// 接收响应数据

$response_data = '';

while (true) {

    $read_result = socket_read($socket, 1024);
    if ($read_result === false || $read_result == '') break; // 如果读取到的数据为空或者读取失败,则跳出循环

    $response_data .= $read_result;

}

echo "接收到的响应数据: " . $response_data . PHP_EOL;



// 关闭socket连接

socket_close($socket);

?>


注意:
1、发送数据的php需要用cmd方便调试,因为cmd可以直接运行php,并且能把每次发过来的东西都打印出来。php E:\zhongjiao\WWW\xt_xinghuo\ceshi2.php
2、如果报这个错:通常每个套接字地址(协议/网络地址/端口)只允许使用一次。需要修改一下端口号

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/727026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测

回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测 目录 回归预测 | MATLAB实现WOA-GCNN鲸鱼算法优化分组卷积神经网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 回归预测 | MATLAB实现WOA-GCNN鲸鱼…

三足鼎立的SIEM、SOAR和XDR

如今&#xff0c;变化的安全挑战、多态的IT架构、复杂的建设需求、严苛的合规审查……&#xff0c;甲方心力交瘁&#xff0c;乙方疲于奔命。传统安全产品交付模式&#xff0c;投入大、成本高、难维护、效果差&#xff0c;完全无法应对。 网络攻击的增长导致合规要求更加严格。…

经典目标检测算法模型总结汇总

这里主要是想要记录汇总一下平时有意无意查资料、学习等了解查阅的目标检测领域中各种模型的原理、优点缺点等内容&#xff0c;主要是方便温故知新&#xff0c;也希望能帮到需要的人。 目标检测任务涌现了很多经典的模型&#xff0c;下面是一个模型的总结记录。 (1)R-CNN&…

如何一次性修改文件扩展名

现代社会中&#xff0c;我们经常需要处理大量的文件&#xff0c;有时候需要批量修改文件的扩展名。在这种情况下&#xff0c;使用文件管理工具可以帮助我们快速完成这项任务。下面&#xff0c;我将介绍如何使用“固乔文件管家”这个文件管理工具来一次性修改文件扩展名。 首先&…

红外雨量计(光学雨量传感器)在智慧灌溉中的应用

红外雨量计&#xff08;光学雨量传感器&#xff09;在智慧灌溉中的应用 红外雨量计是一种利用红外线原理测量雨水量的传感器&#xff0c;可以用于智慧灌溉中实现精准测量和控制灌溉量&#xff0c;从而提高灌溉效率和节约水资源。 红外雨量计可以通过测量雨滴数量和大小&#x…

PaddleClas:训练技巧

训练技巧 1.优化器的选择 带momentum的SGD优化器有两个劣势&#xff0c;其一是收敛速度慢&#xff0c;其二是初始学习率的设置需要依靠大量的经验&#xff0c;然而如果初始学习率设置得当并且迭代轮数充足&#xff0c;该优化器也会在众多的优化器中脱颖而出&#xff0c;使得其…

基于springboot的教学助手后端管理系统设计与实现(源码+文档+开题+数据库+任务书)

教学助手系统是高校教学、教学管理的重要应用系统。随着教研教改的深入发展&#xff0c;信息技术的运用已经成为打造高效课堂必不可少的重要手段。教学助手软件集教材资源分享、课前导学、课堂互动、在线检测、课后作业等功能为一体&#xff0c;拓展教学时空&#xff0c;增强教…

python爬虫_requests获取bilibili锻刀村系列的字幕并用分词划分可视化词云图展示

文章目录 ⭐前言⭐获取字幕步骤&#x1f496; 查找heartbeat接口&#x1f496; 字幕api接口&#x1f496; 正则提取p标签的内容 ⭐分词⭐结束 ⭐前言 大家好&#xff0c;我是yma16&#xff0c;本文分享python的requests获取哔哩哔哩锻刀村的字幕并用分词划分可视化词云图展示。…

Linux MySQL数据迁移

背景&#xff1a;MySQL安装时如果数据文件存在系统盘&#xff0c;随着业务的增长&#xff0c;必定会占用越来越多的系统盘空间直至爆满。为了给系统盘腾出空间来维持服务器的正常运转&#xff0c;需要将MySQL数据文件转移到其他磁盘。 实现步骤&#xff1a;1.在其他磁盘上创建…

Redis集群环境搭建[CentOS7]

下载 cd /usr/local/src/ wget https://mirrors.huaweicloud.com/redis/redis-7.0.11.tar.gz编译安装 tar -xzvf /usr/local/src/redis-7.0.11.tar.gz -C /usr/local/src/ cd /usr/local/src/redis-7.0.11 make PREFIX/usr/local/redis-7.0.11 install制作集群配置模板 cat …

删除排序链表中的重复元素(保留一个重复元素或不保留重复元素)

题目1&#xff1a;给定一个已排序的链表的头 head &#xff0c; 删除所有重复的元素&#xff0c;使每个元素只出现一次 。返回 已排序的链表 。&#xff08;重复元素不全部都删除&#xff0c;需要保留一个&#xff09; 解题思路&#xff1a; 遍历链表&#xff0c;找到重复元素…

Openlayers Draw的用法、属性、方法、事件介绍

Openlayers Draw绘制功能比较常用,如我们需要手动绘制一些点、线、面、多边形,圆等图形,Openlayers为我们提供了相关的API,主要API都在ol/interaction/Draw里面,绘制的API使用起来也比较简单,首先创建一个Draw对象,然后再使用Map的addInteraction方法添加该对象,就可以…

造个CPU玩玩——从硬件到软件的设计

本文使用模拟电路制造CPU——纸上谈兵。 计算机中蕴藏的哲理 最基本的思想是&#xff1a;通过基本电路的接线&#xff0c;确立输入-输出规则&#xff0c;类似函数的入参和返回值&#xff0c;便构成一个功能电路单元。单元套单元组成新单元&#xff0c;如此往复。“一生二&…

vue实现指定div右键显示菜单,并实现复制内容到粘贴板

效果图 实现 全有注释&#xff0c;代码如下&#xff1a; <!--指定的需要右键菜单的div--><div class"content" contextmenu.prevent"showMenu($event, item)"><span class"content_msg">{{item}}</span></div>&…

Python如何批量将图片以超链接的形式插入Excel

【研发背景】 在日常办公中&#xff0c;我们经常需要将图片插入进Excel中&#xff0c;但是如果插入的图片太多的话&#xff0c;就会导致Excel的文件内存越来越大&#xff0c;但是如果我直插入图片的路径&#xff0c;或者只是更改某一列的数据设置为超链接&#xff0c;这样的话&…

拉格朗日乘子法

首先定义一个原始最优化问题&#xff1a; 引入广义拉格朗日函数&#xff0c;将约束问题转换为无约束优化问题&#xff1a; 参数和自变量x求偏导&#xff0c;分别为零&#xff0c;就能解出一个值&#xff08;极大值或者极小值&#xff09;。 直接求解有时候非常困难&#xff0c…

企业和公司扩展WordPress网站的4种方法

Netflix 通过邮递观看 DVD。Apple 是一家计算机公司&#xff0c;而不是电话公司。WordPress 是一个博客平台。 这三个陈述有什么共同点&#xff1f;十年前都是对的&#xff0c;现在都不是了。如今&#xff0c;Netflix 以数字方式提供原创内容而闻名。Apple 正在推出其广受欢迎…

从零开始 Spring Boot 62:过滤实体和关系

从零开始 Spring Boot 62&#xff1a;过滤实体和关系 图源&#xff1a;简书 (jianshu.com) JPA&#xff08;Hibernate&#xff09;中有一些注解可以用于筛选实体和关系&#xff0c;本文将介绍这些注解。 Where 有时候&#xff0c;我们希望对表中的数据进行“软删除”&#x…

Meta为全天候AR眼镜设计了AI系统的八大指导方针

众所周知&#xff0c;Meta不仅局限在Quest这类VR头显上&#xff0c;同时还在打造更轻量化的AR眼镜&#xff0c;目标就是让产品更好的融入到人们的日常生活中去。除了硬件上轻量化以外&#xff0c;在功能和交互体验上也至关重要&#xff0c;例如自然交互方式&#xff0c;比如手势…

什么是人工智能大模型?

目录 1. 人工智能大模型的概述&#xff1a;2. 典型的人工智能大模型&#xff1a;3. 人工智能大模型的应用领域&#xff1a;4. 人工智能大模型的挑战与未来&#xff1a;5. 人工智能大模型的开发和应用&#xff1a;6. 人工智能大模型的学习资源&#xff1a; 人工智能大模型是指具…