前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >云通信IM案例:代理参数设置错误导致图片消息发送失败

云通信IM案例:代理参数设置错误导致图片消息发送失败

原创
作者头像
dongdonglin
发布2020-11-06 10:26:50
1.2K0
发布2020-11-06 10:26:50
举报

前言

近期收到用户反馈在测试IM SDK过程中,使用TIMMsgSendNewMsg接口发送图片消息时返回6006错误码,并且提示http request failed错误描述。用户反馈不清楚问题产生的原因以及如何解决。本文详细分析原因及解决办法(本文以Windows 平台下 IM SDK 进行分析)。

问题描述

TIMMsgSendNewMsg是IM SDK中提供的一个发消息接口,利用这个接口,可以实现发送多种消息,例如可以发送文本消息、表情消息、位置消息、图片消息、声音消息、自定义消息等。具体调用规则:

具体接口说明可以参考文档:https://cloud.tencent.com/document/product/269/33549。

当需要发送图片消息时,调用此接口时应该传入ImageElem结构化的数据:

ImageElem的数据结构描述可参考:https://cloud.tencent.com/document/product/269/33553#imageelem。

云工程师收到一位用户在使用此接口过程反馈会遇到接口返回6006错误的错误,具体提示如下图:

用户不清楚此问题发生的原因和解决办法,用户提到比较多的疑问点如下:

  1. 登录正常,而且已经可以发文本类型的消息,发送方和接收方都能正常收到文本类型的消息,就是发送文件或图片报错。
  2. 有些用户在更换计算机环境后,此问题解决。

从以上现象可以初步分析:此问题应该和客户端配置网络的参数有关,并非是后台问题。那么这类问题应该如何排查呢?

原因分析及解决方案

TIMMsgSendNewMsg发送图片消息时,会比发送文本消息多一步上传图片的过程:sdk会先将图片资源上传到cos服务器,然后再将消息内容提交到IM后台。

图片消息交互流程:

在上传cos服务器过程中,sdk使用http接口进行上传图片,在这一步可以设置http proxy参数,具体设置方法如下。

Http Proxy设置方式:

Json::Value json_http_proxy;

json_http_proxy[kTIMHttpProxyInfoIp] = "http://http-proxy.xxxxx.com ";

json_http_proxy[kTIMHttpProxyInfoPort] = 8888;

Json::Value json_config;

json_config[kTIMSetConfigHttpProxyInfo] = json_http_proxy;

if (TIM_SUCC != TIMSetConfig(json_config.toStyledString().c_str(), [](int32_t code, const char* desc, const char* json_param, const void* user_data) {

// 回调内部

}, this)) {

// TIMSetConfig 接口调用失败

}

TIMSetConfig一般在应用初始化进程调用,当调用此参数设置http proxy后,后续调用TIMMsgSendNewMsg函数进行图片消息发送时,都会将在此设置的http proxy代理参数做为调用上传图片的http proxy。

返回6006错误原因及解决办法:

当使用TIMSetConfig设置了错误了的http proxy,就会导致上述错误的发生。部分用户因为copy从别的应用中直接copy代码,未对TIMSetConfig内参数进行修改,实际设置的http proxy 并不一个有效的http proxy,导致了上述问题的发生,并且此问题比较隐蔽,不易排查。

在了解发送图片消息的原理后,这个问题的解决就很简单了。使用TIMSetConfig设置正确的http proxy参数即可。当然如果机器所在网络不需要使用http proxy,可以不设置kTIMSetConfigHttpProxyInfo参数。

总结

IM产品功能十分强大,因此配置参数也较复杂,在遇到报错的时候,如果能深入理解sdk和后台交互的工作原理,那么对解决问题可以起到事半功倍的效果。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 问题描述
  • 原因分析及解决方案
    • 图片消息交互流程:
      • Http Proxy设置方式:
        • 返回6006错误原因及解决办法:
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档