Java-WebSocket调用报错:WebSocketClient objects are not reuseable
我的代码
- import com.google.common.collect.ImmutableMap;
- import com.google.common.io.ByteArrayDataOutput;
- import com.google.common.io.ByteStreams;
- import com.google.gson.Gson;
- import com.xxx.web.open.service.CacheService;
- import com.xxx.web.open.util.AudioStreamHelper;
- import lombok.Setter;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.tuple.ImmutablePair;
- import org.java_websocket.enums.ReadyState;
- import org.java_websocket.client.WebSocketClient;
- import org.java_websocket.handshake.ServerHandshake;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.util.DigestUtils;
- import java.io.File;
- import java.net.URI;
- import java.nio.ByteBuffer;
- import java.util.Map;
- import java.util.Objects;
- import java.util.UUID;
- import java.util.concurrent.locks.ReentrantLock;
- /***
- * 离线语音合成
- */
- @Slf4j
- @Component("ttsService")
- public class OfflineTTSService extends WebSocketClient {
- public String textToSpeech(String text, String speakerId) throws InterruptedException {
- /***
- * 根据请求的内容计算hash值,防止请求重放,产生不必要的请求,浪费服务器资源(内存、cpu、硬盘空间)
- * hash值产生算法:
- * 1、byteArrayOf("tts")+byteArrayOf("待转换的文字")
- * 2、byteArrayOf("asr")+音频流二进制 byte[]
- * 3、byteArrayOf("merge") + 文件流 byteArray1[] + 文件流byteArray2[] + ... 文件流 byteArrayN[]
- */
- ImmutablePair<Boolean, String> result = findConversion(computeHash(text,speakerId));
- Boolean existed = result.getLeft();
- if(existed)
- {
- String uuid = result.getRight();
- log.warn("重复的合成请求:{}",uuid);
- return uuid;
- }
- synchronized (this)
- {
- if(getReadyState()==ReadyState.NOT_YET_CONNECTED) {
- if(isClosed()) {
- reconnectBlocking();
- }else{
- connectBlocking();
- }
- }else if(getReadyState() == ReadyState.CLOSED){
- reconnectBlocking();
- }
- }
- }
之前的方法
- import com.google.common.collect.ImmutableMap;
- import com.google.common.io.ByteArrayDataOutput;
- import com.google.common.io.ByteStreams;
- import com.google.gson.Gson;
- import com.x.web.open.service.CacheService;
- import com.x.web.open.util.AudioStreamHelper;
- import lombok.Setter;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.tuple.ImmutablePair;
- import org.java_websocket.enums.ReadyState;
- import org.java_websocket.client.WebSocketClient;
- import org.java_websocket.handshake.ServerHandshake;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import org.springframework.util.DigestUtils;
- import java.io.File;
- import java.net.URI;
- import java.nio.ByteBuffer;
- import java.util.Map;
- import java.util.Objects;
- import java.util.UUID;
- import java.util.concurrent.locks.ReentrantLock;
- /***
- * 离线语音合成
- */
- @Slf4j
- @Component("ttsService")
- public class OfflineTTSService extends WebSocketClient {
- public String textToSpeech(String text, String speakerId) throws InterruptedException {
- /***
- * 根据请求的内容计算hash值,防止请求重放,产生不必要的请求,浪费服务器资源(内存、cpu、硬盘空间)
- * hash值产生算法:
- * 1、byteArrayOf("tts")+byteArrayOf("待转换的文字")
- * 2、byteArrayOf("asr")+音频流二进制 byte[]
- * 3、byteArrayOf("merge") + 文件流 byteArray1[] + 文件流byteArray2[] + ... 文件流 byteArrayN[]
- */
- ImmutablePair<Boolean, String> result = findConversion(computeHash(text,speakerId));
- Boolean existed = result.getLeft();
- if(existed)
- {
- String uuid = result.getRight();
- log.warn("重复的合成请求:{}",uuid);
- return uuid;
- }
- synchronized (this)
- {
- if(!isOpen()) {
- connectBlocking();
- }
- }
- }
经过以上修改解决问题
其他地方调用者服务
- @Autowired
- OfflineTTSService ttsService;
- @Configuration
- public class WebAppConfig extends WebMvcConfigurerAdapter {
- @Bean
- public URI serverUri() throws URISyntaxException {
- return new URI("ws://xxx.yyy.zzz.aaa:8081/test");
- }
- }
Java-WebSocket调用报错:WebSocketClient objects are not reuseable的更多相关文章
- dubbo 使用zookeeper 出现 Dubbo客户端调用报错NullPointerException
现在将网上的方法总结一下 方法一:.https://blog.csdn.net/u011294519/article/details/81810631 dubbo-provider.xml:提供者先扫 ...
- protobuf接口调用报错:java.nio.charset.MalformedInputException: Input length = 1
使用protobuf定义的接口api发起http请求报错,日志如下: [-- ::] DEBUG AbstractPool: - server updated, node=, server={ nod ...
- jmeter 启动jmeter-server.bat远程调用报错: java.io.FileNotFoundException: rmi_keystore.jks (系统找不到指定的文件。)
1.找到apache-jmeter-5.0\bin\jmeter.properties 2.修改server.rmi.ssl.disable=true (记得去除server.rmi.ssl.disa ...
- 【技术贴】webservice cxf2 客户端动态调用报错No operation was found with the name
No operation was found with the name xxx 出错原因是因为发布服务的接口所在包路径和此接口实现类包路径不一致,比如你的服务接口可能放在了包com.x.interF ...
- springboot多模块项目下,子模块调用报错:程序包xxxxx不存在
今天在用springboot搭建多模块项目,结构中有一个父工程Parent 一个通用核心工程core 以及一个项目工程A 当我在工程A中引入core时,没有问题,maven install正常 当我 ...
- CFX客户端调用报错
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unex ...
- bug:进程可调用函数而子线程调用报错
在调试摄像头时遇到问题:在主进程里调用下述函数能够成功,但在子线程里创建时总是失败,错误打印为 sched: RT throttling activated. UniqueObj<OutputS ...
- Weblogic10.3.6部署解决CXF webService 调用报错: “Cannot create a secure XMLInputFactory”
一,解决步骤 1.添加jar包 stax2-api-3.1.4.jar woodstox-core-asl-4.4.1.jar 2.编写监听器 package com.neusoft.cxf.list ...
- VS2017 Thrift编译出的Release版本的库调用报错LNK2001
在使用thrift的过程中, 当我使用完thrift debug版本编译出来的库调试完成后, 改成release版本的时候, 就出现了如下错误, 莫名其妙啊, 同一套代码, 那只能是编译库的时候设置和 ...
随机推荐
- Factorization Machines
- 大数据之路week06--day07(Hadoop常用命令)
一.前述 分享一篇hadoop的常用命令的总结,将常用的Hadoop命令总结如下. 二.具体 1.启动hadoop所有进程start-all.sh等价于start-dfs.sh + start-yar ...
- 调试错误,请回到请求来源地,重新发起请求。 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足,建议在开发者中心检查对应功能是否已经添加
接人H5手机网站支付宝支付时,已经将表单发给页面了,支付宝响应调试错误,请回到请求来源地,重新发起请求.错误代码 insufficient-isv-permissions 错误原因: ISV权限不足, ...
- Web前端 --- 前端基础简介
目录 web端 HTTP协议 web端 1.前端,后端 什么是前端 任何与用户直接打交道的操作界面,都可以称之为前端, eg:电脑界面 手机界面 什么是后端 真正的幕后操作者 2.前端学习的历程 HT ...
- GIT的创建和使用
1.创建git文件模式 https://www.cnblogs.com/wupeiqi/p/7295372.html 参考地址 先看这个 初始化仓库 git init 在本地新建一个rep ...
- svn优点跟缺点?
优点: 1.svn优点:集中式管理,管理方式在服务端配置好,客户端只需要同步提交即可,使用方便,操作简单,很容易就可以上手 2.在服务端统一控制好访问权限,利用代码的安全管理. 3.所有的代码以服务端 ...
- [bzoj] Network
http://www.lydsy.com/JudgeOnline/problem.php?id=3732 /* Kruskal 最小生成树 树链剖分 最大值查询 注意:可能会有几块不联通的图 */ # ...
- Atcoder Rating System
来翻译一下官方文档,但是建议看英文原文,本文可能会出现一些错误,只是为了方便自己查阅用的. 对于你的每一场rated比赛,会有一个Performance值\(X_i\),你的rating是\(X_i- ...
- java23种设计模式等等。。
23种设计模式http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html 提升Java代码性能和安全性https://blog ...
- Navicat for MySQ中文破解版(无需激活码)
原文链接:https://blog.csdn.net/a599174211/article/details/82795658 1.下载破解版Navicat for MySQ中文破解版 链接: http ...