其中发现有抽象类SpeechTranscriberListener实现接口ConnectionListener,于是去网上搜了搜这样做的意义,
如果是普通类实现接口,他必须实现接口中所有的方法,而抽象类可以只实现其中一部分方法,而抽象类的子类,仍可以实现接口中有而抽象类中没有的方法。
1.创建SpeechTranscriberDemo并调用process(filePath)
2.在SpeechTranscriberDemo的process方法中调用 transcriber.send
3.SpeechTranscriber的send方法调用了接口Connection的sendBinary方法
4.使用接口Connection中的sendBinary方法
接口Connection的实现类NettyConnection中的sendBinary(byte[] payload) 实现:
这有个问题,这里的channel是怎么赋值的呢?
在SpeechTranscriber的构造函数中,可以看到
调用NlsClient的connect方法生成Connection实例,在connect方法中,可以看到,
发生异常,只会尝试3次。
而this.client在该类的构造方法中,赋值了一个NettyWebSocketClient实例(用的Netty实现webSocket)
在NettyWebSocketClient类中,Channel实例是this.bootstrap的connect方法返回的