打开后立即关闭AWS Node.js Web套接字连接

发布时间:2020-07-07 07:15

我使用AWS-SDK使用base-64将语音转换为文本,当我通过套接字将数据发送到服务器时,它打开了连接,但是打开后立即关闭了连接并且没有发送任何结果, 这是我的服务器代码:


    function pcmEncode(input) {
    var offset = 0;
    var buffer = new ArrayBuffer(input.length * 2);
    var view = new DataView(buffer);
    for (var i = 0; i < input.length; i++, offset += 2) {
    var s = Math.max(-1, Math.min(1, input[i]));
    view.setInt16(offset, s < 0 ? 0x8000 : 0x7FFF, true);
    }
    return buffer;
    }
    
    function getAwsEventMessage(buffer) {
    return {
    headers: {
    ":message-type": {
    type: "string",
    value: "event",
    },
    ":event-type": {
    type: "string",
    value: "AudioEvent",
    },
    },
    body: buffer,
    }
    }
    
    function speechToText(io, config) {
    let ws;
    io.on('start', () => {
    console.log('---------start')
    let awsURL = awsSignature.createPreSignedUrl({
    region: config.region,
    sampleRate: 16000,
    languageCode: "en-US",
    accessKeyId: config.accessKeyId,
    secretAccessKey: config.secretAccessKey
    });
    
        ws = new WebSocket(awsURL)
    
        //open up our WebSocket connection
        ws.binaryType = "arraybuffer";
    
        ws.on("open", () => console.log('open'))
        ws.on("message", () => console.log('message'))
        ws.on("error", () => console.log('err'))
        ws.on("close", () => console.log('close'))
    
    })
    
    io.on("speech_to_text", (stream, data) => {
        console.log('write-----')
    
        if (ws.readyState === ws.OPEN) {        
            ws.send(convertAudioToBinaryMessage(stream))
        }
    })
    }

意外行为: 当我打开套接字连接以从前端发送流时,它立即关闭并且不返回任何结果。

回答1
aws-transcribe 相关推荐