我的代码

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的更多相关文章

  1. dubbo 使用zookeeper 出现 Dubbo客户端调用报错NullPointerException

    现在将网上的方法总结一下 方法一:.https://blog.csdn.net/u011294519/article/details/81810631 dubbo-provider.xml:提供者先扫 ...

  2. protobuf接口调用报错:java.nio.charset.MalformedInputException: Input length = 1

    使用protobuf定义的接口api发起http请求报错,日志如下: [-- ::] DEBUG AbstractPool: - server updated, node=, server={ nod ...

  3. 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 ...

  4. 【技术贴】webservice cxf2 客户端动态调用报错No operation was found with the name

    No operation was found with the name xxx 出错原因是因为发布服务的接口所在包路径和此接口实现类包路径不一致,比如你的服务接口可能放在了包com.x.interF ...

  5. springboot多模块项目下,子模块调用报错:程序包xxxxx不存在

    今天在用springboot搭建多模块项目,结构中有一个父工程Parent  一个通用核心工程core 以及一个项目工程A 当我在工程A中引入core时,没有问题,maven install正常 当我 ...

  6. CFX客户端调用报错

    Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Unmarshalling Error: unex ...

  7. bug:进程可调用函数而子线程调用报错

    在调试摄像头时遇到问题:在主进程里调用下述函数能够成功,但在子线程里创建时总是失败,错误打印为 sched: RT throttling activated. UniqueObj<OutputS ...

  8. 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 ...

  9. VS2017 Thrift编译出的Release版本的库调用报错LNK2001

    在使用thrift的过程中, 当我使用完thrift debug版本编译出来的库调试完成后, 改成release版本的时候, 就出现了如下错误, 莫名其妙啊, 同一套代码, 那只能是编译库的时候设置和 ...

随机推荐

  1. 记一个VS连接过程中找不到cpp的解决方法

    在新增几个qt页面时,发现原来没动的几个cpp 连接报错了,错误均是qt的相关文件找不到 应该是moc文件没有生产或者没有被包含进工程.我想着既然我没动,应该不会是moc的原因,就在其他方向解决了很久 ...

  2. Java 中待总结工具类学习(自定义注解,读取配置,字面List)

    1.使用 MessageFormat 格式化文本 int planet = 7; String event = "a disturbance in the Force"; Stri ...

  3. tomcat 处理HTTP请求

    一.Tomcat是什么?Tomcat是一个Web应用服务器,同时也是一个Servlet/JSP容器.Tomcat作为Servlet容器,负责处理客户端请求,把请求传送给Servlet,并将Servle ...

  4. 002_软件安装之_keil4与keil5共存

    目的:实现keil4和keil5的共存 1. Keil4 主要用来开发 C51 程序 2. Keil5 也就是 MDK 主要用来开发 ARM 芯片,如 STM32 系列芯片 3. 资料下载地址:链接: ...

  5. MongoDB 分片管理(三)服务器管理

    MongoDB 分片管理(三)服务器管理

  6. plupload上传整个文件夹

    大容量文件上传早已不是什么新鲜问题,在.net 2.0时代,HTML5也还没有问世,要实现这样的功能,要么是改web.config,要么是用flash,要么是用一些第三方控件,然而这些解决问题的方法要 ...

  7. NCNN使用总结

    目录 NCNN简介 NCNN注意事项 NCNN使用心得 小技巧 小想法 NCNN简介 ncnn 是一个为手机端极致优化的高性能神经网络前向计算框架.ncnn 从设计之初深刻考虑手机端的部署和使用.无第 ...

  8. (4)打造简单OS-loader硬盘加载和C++写入文件

    0.简要说明: 我们完全可以使用bochs创建映像文件,如https://blog.csdn.net/jadeshu/article/details/89046838   ,那么为什么还去用C++去模 ...

  9. 【SPOJ】Distinct Substrings

    [SPOJ]Distinct Substrings 求不同子串数量 统计每个点有效的字符串数量(第一次出现的) \(\sum\limits_{now=1}^{nod}now.longest-paren ...

  10. mapper @Select()注解开发,使用模板 if 和循环

    if @Select({"<script>", "SELECT " + " mu.id userId, " + " e ...