开发者社区 > 大数据与机器学习 > 人工智能平台PAI > 正文

使用websocket请求asr,无法连接

使用websocket实时发送音频,但是无法和服务建立连接,设备有外网,可以真确的获取token,但是websocket无法连接
image.png
直接在这块返回了
同样的代码,同样的设备,我在家里面是可以正常访问建立,正常访问的,请问是什么原因,会是因为websocket一直在发心跳包,导致封了ip吗

展开
收起
gr55pntppoqgu 2024-07-18 22:24:34 51 0
2 条回答
写回答
取消 提交回答
  • 技术浪潮涌向前,学习脚步永绵绵。

    遇到WebSocket无法建立连接的问题时,可能的原因有很多,以下是一些常见的排查步骤和解决思路:

    1. 检查URL是否正确:确认WebSocket服务器的URL是否正确无误,包括协议(ws:// 或 wss://)、域名、端口和路径。如果是通过HTTPS页面发起连接,需要使用wss://而非ws://。

    2. 查看网络权限和防火墙设置:确保设备的网络环境允许WebSocket连接。有时候,企业或公共网络的防火墙会阻止非HTTP(S)的连接,包括WebSocket。尝试在不同网络环境下测试,看是否能建立连接。

    3. 服务器端问题:确认WebSocket服务器是否正常运行,没有宕机或正在进行维护。可以通过服务器端的日志来查看是否有连接尝试的记录以及失败原因。

    4. 证书问题(如果是wss://):如果使用的是加密的WebSocket连接(wss://),确保服务器证书有效、未过期,且是由受信任的CA签发的。客户端可能因为证书问题拒绝连接。

    5. 握手阶段的错误:WebSocket连接建立过程中涉及到HTTP Upgrade请求,检查这个过程中是否有错误,比如服务器返回的状态码不是101 Switching Protocols。

    6. 检查浏览器或客户端限制:某些浏览器或WebSocket客户端可能会有特定的安全策略或限制,比如同源策略(Same-Origin Policy)或CORS设置。确保服务端配置正确处理跨域请求,如果需要的话。

    7. 网络超时或不稳定:网络延迟或不稳定也可能导致连接失败。可以尝试增加连接超时时间或在网络状况更佳时重试。

    8. 使用开发者工具调试:大多数现代浏览器的开发者工具(如Chrome DevTools)提供了WebSocket的调试功能,可以查看连接、发送和接收的消息详情,以及任何发生的错误,这对于诊断问题非常有帮助。

    9. 错误信息:仔细检查任何错误信息或异常,无论是客户端收到的还是服务器端记录的,这些通常是解决问题的关键线索。

    如果上述步骤都无法解决问题,建议详细记录连接尝试时的所有相关信息(如错误代码、日志信息等),并考虑联系服务器提供商或查阅更具体的文档、论坛寻求帮助。

    2024-07-19 10:22:13
    赞同 8 展开评论 打赏
  • 北京阿里云ACE会长

    确保获取的 Token 是有效的,并且没有过期。

    检查 WebSocket 库的配置是否正确,特别是 URL、协议和端口。

    WebSocket 连接

    #include <websocketpp/config/asio_no_tls.hpp>
    #include <websocketpp/client.hpp>
    
    typedef websocketpp::client<websocketpp::config::asio_client> client;
    
    int main() {
        client c;
        try {
            c.set_access_channels(websocketpp::log::alevel::none);
            c.clear_access_channels(websocketpp::log::alevel::frame_payload);
    
            c.init_asio();
            c.start_perpetual();
    
            websocketpp::lib::error_code ec;
            client::connection_ptr con = c.get_connection("wss://your-service-url", ec);
            if (ec) {
                std::cout << "Connection error: " << ec.message() << std::endl;
                return 1;
            }
    
            c.set_message_handler(con, [](client* c, websocketpp::connection_hdl hdl, client::message_ptr msg) {
                std::cout << "Received message: " << msg->get_payload() << std::endl;
            });
    
            c.connect(con);
    
            c.run();
        } catch (websocketpp::exception const & e) {
            std::cout << "WebSocket++ exception: " << e.what() << std::endl;
        }
    
        return 0;
    }
    
    2024-07-19 08:39:59
    赞同 2 展开评论 打赏

人工智能平台 PAI(Platform for AI,原机器学习平台PAI)是面向开发者和企业的机器学习/深度学习工程平台,提供包含数据标注、模型构建、模型训练、模型部署、推理优化在内的AI开发全链路服务,内置140+种优化算法,具备丰富的行业场景插件,为用户提供低门槛、高性能的云原生AI工程化能力。

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载