如何让公网服务端实时发送消息到内网客户端,不使用内网穿透的方式

2023-02-23 15:48:09 +08:00
 baixixi

背景:云服务器上有一个 JAVA 的服务用来处理各种信息的交互,当接收到信息后需要交由内网的一个 python 客户端来进行处理,处理后可以调用服务器告知处理结果

敢问各位大佬有没有什么好用的技术方案,当然有个 demo 最好不过了

2003 次点击
所在节点    Python
15 条回复
jalena
2023-02-23 16:01:33 +08:00
消息队列,整个消费者不是很合适么
touf
2023-02-23 16:28:29 +08:00
不能建立长连接那就内网客户端一直 http 轮询吧
HangoX
2023-02-23 16:33:01 +08:00
建立一个 zerotier 网络,就是虚拟局网,剩下直接用虚拟 ip 访问内网服务器即可
dearmymy
2023-02-23 16:44:27 +08:00
使用 celery
tailscale 这种异地组网对你来说,不知道算不算内网传透。
anaf
2023-02-23 16:47:35 +08:00
如果这样的话 只能使用中间件 flask 是可以用 websockets 的 不是 python demo.py 这样去运行 本地也需要使用 gunicorn 这类方式来运行的 这样才不会卡死
raycool
2023-02-23 16:57:32 +08:00
那就换 tornado 或者 fastapi
Asimov01
2023-02-23 17:02:22 +08:00
弄一个消息队列,云服务器的程序收到消息往队列里推消息,内网客户端监听这个队列,来消息了就处理。
5sheep
2023-02-23 17:02:36 +08:00
装个 vpn 组个虚拟局域网 最简单了。
Kinnice
2023-02-23 17:03:30 +08:00
VPN +1 ,不需要修改业务
VYSE
2023-02-23 17:12:48 +08:00
你都有公网 IP, 为啥不穿透啊
https://github.com/jayu/tcp-local-tunnel
把内网 flask 端口暴露给公网服务端 127.0.0.1:8000, 服务端直接 POST 就行了
Rxianbei
2023-02-23 17:18:19 +08:00
我是通过邮件服务轮询做的. 几秒钟一次轮询邮件服务器. 不优雅, 但能用
jones2000
2023-02-23 17:26:29 +08:00
客户端长连接服务器, 有消息就推送。ws,或 tcp 都可以呀。
777777
2023-02-23 17:42:18 +08:00
tcp,(g)rpc 长连接
Anybfans
2023-02-23 17:43:18 +08:00
websocket
Latin
2023-02-24 09:58:48 +08:00

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

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

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

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

© 2021 V2EX