请教下各路大神, Flutter 连接 RabbitMQ 有人搞过吗?

2022-07-20 14:56:20 +08:00
 isSamle

请教下各路大神,Flutter 连接 RabbitMQ 有人搞过吗?快崩溃了,一直报

WebSocketException: Connection to 'http://xxx.xxx.xxx.xxx/ws#' was not upgraded to websocket
10557 次点击
所在节点    Android
16 条回复
Vaspike
2022-07-20 15:47:03 +08:00
协议提升问题,这个可能要找文档看看哪里缺了配置
heybuddy
2022-07-20 16:10:52 +08:00
如果是自己的搭的是不是没有开启 rabbitmq 的 ws 插件?那个要手动打开
isSamle
2022-07-20 16:12:30 +08:00
@Vaspike 我太水了,试了两天了
@heybuddy 开了,我用 vue 和 uniapp 写的 stomp 连接都没问题,就是 Flutter 不行
runningman
2022-07-20 16:30:35 +08:00
还是和后天 api 通讯吧。直接连 rabbitmq 貌似有点奇葩
isSamle
2022-07-20 16:36:58 +08:00
@runningman 为了偷懒,用 RabbitMQ 的消息队列😂,监听到有新信息的时候刷新数据,之前写 h5 没啥问题
debuggerx
2022-07-20 16:53:36 +08:00
用插件 /换插件
isSamle
2022-07-20 16:55:56 +08:00
@debuggerx 枯了 能搜到的插件都试了
hahastudio
2022-07-20 16:58:01 +08:00
runningman
2022-07-20 17:13:45 +08:00
@isSamle 那可能用的库不一样,你找个 dart 的 stomp 的 client 试试
akaHenry
2022-07-20 23:04:55 +08:00
为什么会有 flutter 直连 rabbitmq 这样的骚操作?

在用 flutter 写 admin?

如果是用户侧, 不应该后端对 rabbitmq 进行封装, 提供更简单的 rest api or ws api 吗?
brucebot
2022-07-20 23:50:48 +08:00
看来这位兄台在搞什么工业互联网项目,手机直接读还是改 mqtt 数据啊
isSamle
2022-07-21 09:15:28 +08:00
@hahastudio 谢谢了,英语太水,愣是没看懂😂
@runningman 用了 dart_amqp 、stomp_dart_client 还是不行
@orzglory 因为想做成即时通讯,我之前写了一个 H5 版本的,用户聊天的时候,发送信息后端会给 RabbitMQ 发信息,然后其他用户监听收到有信息更新,就执行 get 请求获取新信息,但是是用 Uniapp 写的,感觉坑很多,就想改用 Flutter 写
@brucebot 不是工业互联网😄,是一个 Django 项目快速开发框架,想集成一些基础模块:用户权限管理,低代码工具那些已经做了点出来了,想集成一个即时通讯模块
akaHenry
2022-07-21 17:43:13 +08:00
其实不管从架构设计, 安全性, 扩展性上, 都不应该滥用 rabbitmq 自带 ws 这种特性, 来对外提供用户侧服务.

更常规的做法是比如用 go, 搭正常的 web server, 提供 ws api, go 内部对 rabbitmq 常规使用.
这样避免 rabbitmq 单机 /单集群扩容问题. 同时也容易做限流, 防止把中间件打死. (所有中间件, 都不应该对用户侧暴露)

另外, IM 类的成熟开源方案, go 社区就有很多. 直接部署, 你用 flutter 对接一下 API. 就结束了.
搭即时通讯, rabbitmq 也不是恰当选择.

anyway, 如果只是为了学习, 无所谓.

你这里报错, 只是 ws 使用不当, 应该与 rabbitmq 无关(当然也可能是 rabbitmq 的 ws 插件有坑?)
ws 协议本身没啥复杂性. 如果无法确定是谁的锅. 先不用 rabbitmq, 裸写 ws demo, 来排查.
isSamle
2022-07-21 21:16:59 +08:00
@orzglory 谢谢,不会 go😂,只会 python+一点点 java+一点点 flutter ,所以才想用 RabbitMQ 偷懒
huobazi
2022-07-22 16:07:03 +08:00
flutter 是做 UI 的吧,直接连 Q ?
isSamle
2022-07-22 22:37:37 +08:00
@huobazi 灵机一动想到的,长链接监听信息更新来实现即时通讯

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/867542

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX