mesh服务二次开发文件上传问题

frfr46467979 21天前 159

A域给B域发送的文件消息 2边都使用的是野火私有的minio。 有什么办法可以传到B域去?

最新回复 (20)
  • HeavyRain 21天前
    引用 2楼
    野火私有minio仅添加了一个加密上传的方法,其他没有任何改动,所以可以使用minio官方的SDK,调用官方SDK把一边的文件下载下来,再上传到另外一边(是不是可以同时下载和上传,或者sdk有没有拷贝的方法?总之要想办法加快进度)
  • HeavyRain 21天前
    引用 3楼
    上面的回复有问题,下载和上传不在同一个服务中,如果A域发送到B域,A域的OutService要调用B域的发送消息接口前,如果有媒体文件,需要先调用B域的上传文件接口,B域把文件上传到B域的minio后,返回给A一个B域的地址后,替换媒体链接里的地址再调用B域的发送接口。

    所以这里需要二开一下那个桥接服务,有能给对方上传文件的能力才行
  • frfr46467979 21天前
    引用 4楼
    你的意思就是要在mesh服务里加一个接口用于文件上传?
  • HeavyRain 20天前
    引用 5楼
    最近几个提交已经添加上了,有个开关 bridge.media_public_accessible 需要改成false,这样当发送媒体类消息时,会把文件也发送过去。数据库需要手动操作一下更新,README上有说明。这次修改改动比较多,如果更新请做好备份和回滚的准备。
  • HeavyRain 20天前
    引用 6楼
    修改的代码也请你们review一下看看
  • frfr46467979 20天前
    引用 7楼
    拉取了最新的代码,你们这个配置文件里的minio是配置野火的私有minio地址吗?还是部署一个独立的minio?
  • frfr46467979 20天前
    引用 8楼
    我拉取了你们最新的代码,问题解决了,但是我们遇到一个问题,我们最终上线是准备关掉匿名访问的,经过测试关掉匿名访问之后这个功能就有问题了
  • HeavyRain 18天前
    引用 9楼
    frfr46467979 拉取了最新的代码,你们这个配置文件里的minio是配置野火的私有minio地址吗?还是部署一个独立的minio?
    可以用IM服务用的同一个minio地址
  • HeavyRain 18天前
    引用 10楼
    frfr46467979 我拉取了你们最新的代码,问题解决了,但是我们遇到一个问题,我们最终上线是准备关掉匿名访问的,经过测试关掉匿名访问之后这个功能就有问题了
    这个就需要对文件进行签名处理了,稍等我们加一下
  • frfr46467979 18天前
    引用 11楼
    还有这个问题:isPublish2OriganlDomain 打印了下日志,这个参数一直都是true
  • HeavyRain 18天前
    引用 12楼
    HeavyRain 这个就需要对文件进行签名处理了,稍等我们加一下
    这个已经加了,请更新验证
  • HeavyRain 18天前
    引用 13楼
    假设2个域A,B。有个群在B中,群中有A的1,2,3用户,B域的4,5,6用户。
    如果1,在群里发一条消息,首先会有1个请求从A的bridge服务发送到B的bridge服务,isPublish2OriganlDomain是false。然后B域处理完之后,还要把消息发送给A域中的2,3,这个时候 isPublish2OriganlDomain 就是true,结果就是B再发回A时,不再传输文件了,A域收到后,会查找到是发出去再返回来的,要找到原来的链接填上。

    请按照这个流程debug一下看看是哪里出了问题。另外升级时还需要有个升级脚本执行,请确认是否执行
  • frfr46467979 18天前
    引用 14楼
    因为我们公司的网络环境问题,我没办法本地debug到,我只能通过添加日志的方式排查:
    假设2个域A,B。有个群在B中,群中有A的1,2用户,B域的4,5用户。
    现在我用1用户在A群发送一个图片,日志信息如下:
    A域的mesh服务打印:
    2026-10-12 10:35:15.378  INFO 13 --- [nio-8100-exec-1] c.w.bridge.service.OutService            : onPublishMessageRequest方法,isPublish2OriganlDomain结果为:true
    2026-10-12 10:35:15.800  INFO 13 --- [nio-8100-exec-2] c.w.bridge.service.OutService            : onPublishMessageRequest方法,isPublish2OriganlDomain结果为:true
    2026-10-12 10:35:15.801  INFO 13 --- [nio-8100-exec-2] c.w.bridge.service.OutService            : isPublish2OriganlDomain的值是:true

    onPublishMessageRequest方法触发了2次,2次的结果都是true,按我的理解应该一次是true 一次是false对不对?
    B服务的mesh没有相关日志。我仅仅在你更新的代码里加了2段日志
    现象现在就是:B域的人收到的图片点开是404. 我已经拉取了你最新的代码并且加上了日志打印

  • frfr46467979 18天前
    引用 15楼
    反之:
    用4在A群发,A域的人能正常点开图片不会提示404。但是B域的minio存放了2个图片
    2026-10-12 10:38:07.910  INFO 13 --- [nio-8100-exec-1] c.w.bridge.service.OutService            : onSendMessageRequest方法,isPublish2OriganlDomain默认为false
    2026-10-12 10:38:09.946  INFO 13 --- [nio-8100-exec-3] c.w.bridge.service.OutService            : onSendMessageRequest方法,isPublish2OriganlDomain默认为false
    2026-10-12 10:38:09.946  INFO 13 --- [nio-8100-exec-3] c.w.bridge.service.OutService            : isPublish2OriganlDomain的值是:false
    这是B域mesh打印的日志,并且此时B域的minio存在了2个文件。
  • HeavyRain 16天前
    引用 16楼
    frfr46467979 因为我们公司的网络环境问题,我没办法本地debug到,我只能通过添加日志的方式排查: 假设2个域A,B。有个群在B中,群中有A的1,2用户,B域的4,5用户。 现在我用1用户在A群发送一个图片,日 ...
    B会再发回A给2的消息,所以 isPublish2OriganlDomain 是true,是应该的。另外一次可能是发回给1的,因为有可能是经过敏感词修改的,所以回来2次应该是对的,而且 isPublish2OriganlDomain 都应该为true
  • HeavyRain 16天前
    引用 17楼
    B域的人收到图片来源是1发出经过A域bridge传输给对方的,传输给对方后返回对方的链接,再把链接放到消息体中。请检查传递给对方和对方上传得到的地址是否正确
  • HeavyRain 16天前
    引用 18楼
    B的bridge收到对方发送过来的文件进行上传,上传后的地址不对,这个地址是配置文件中 media.bucket_xxx_domain 拼接来的,请确认地址和bucket是否匹配,仔细debug这一段看看
  • frfr46467979 16天前
    引用 19楼
    假设2个域A,B。
    有2个群A B分别隶属于这2个域,群成员都由A域的 1 2 和 B域 的4 5组成
    场景1:
    现在我用1用户在A群发送一个图片。
    异常现象:
    B域的人看到是404,地址格式是: B域的地址/A域的文件名.后缀:
    场景2:
    我用4在B群发送一张图片:
    A域的人收到图片是B域的地址

    整套代码我只修改了http://192.168.1.81 分别改成了2个域的域名,仅此而已。

    整套流程只有这种情况可以正常:
    用1 2 在B域的群发图片或者用3 4 在A域的群发图片。

    有什么条件能让我用官方demo验证一下官方是否有一样的问题?官方demo的外部域搜什么可以正常搜到人
  • frfr46467979 16天前
    引用 20楼
    有这种场景是正常的(用1 2 在B域的群发图片或者用3 4 在A域的群发图片。
    ),我认为配置文件应该是没错的。
    官方demo也有mesh,我们有没办法登录到官方的外部域去,我用官方的demo验证一下有没有这个问题。
  • HeavyRain 16天前
    引用 21楼
    已经修改,请更新验证
返回