请教大佬们一个问题,关于如何在 shell 脚本中使用 websocket 和一个 http code 的问题

2022-09-13 21:15:50 +08:00
 smith123

目前已经在 java 后端实现了 websocket ,但现在需要通过 shell 脚本来执行 websocket 的各种操作,比如连接 websocket , 发送消息到服务端,心跳,接收服务端发送的消息。请问应该怎么弄?找了一圈都是基于浏览器实现的,却没有通过 shell 脚本能实现的,请问各位大佬有啥思路吗?

另外再请教个问题,在没后端有主动设置 http code 的情况下,什么情况下 http code 会返回 201 ?

1000 次点击
所在节点    问与答
8 条回复
Mutoo
2022-09-13 21:30:53 +08:00
试试 google 的 zx shell
EridanusSora
2022-09-13 21:35:35 +08:00
何必难为自己。。写个 python 或者 js 脚本用 shell 启动,不好吗
smith123
2022-09-13 21:45:27 +08:00
@EridanusSora 因为平台问题,只能用 shell 脚本,本打算用 curl ,但是发现根本无法发送消息和维持心跳。。。
Jirajine
2022-09-13 21:46:13 +08:00
Tink
2022-09-14 01:01:13 +08:00
bugfan
2022-09-14 01:43:02 +08:00
@smith123 😁curl 可以再 websocket 链接上持续的收消息。但是不能直接在这个 websocket 链接上发消息,如果想实现此功能的话有两种方式,1 是装一些额外的程序比如楼上说的。2 是通过 curl 发送 http 请求到 server,这样的好处是不用安装任何东西(因为现在系统基本都内置了 curl)。

可以参考 https://github.com/bugfan/i996 里面的 shell 代码,基本上一整套交互都有了,版本 1 共 200 行 shell 代码,版本 2 大概 100 多行。你读一下版本 1 的代码应该能满足你,纯 shell 实现的。

201 状态码一般代表创建成功,比如你 post 一个注册用户的表单,正常应该返回 201,实际在数据库了一条记录。
winglight2016
2022-09-14 09:42:03 +08:00
@bugfan 看了大佬的这个项目,名字和内容完全不相关吗?

btw ,看 readme 没搞明白,内网服务端是怎么配置?有没有 docker 版本? ssh 是怎么访问的?有没有例子可以看看?
bugfan
2022-09-14 12:03:53 +08:00
@winglight2016 😁对,名字和内容不想关哈哈哈,就是一个内网穿透,然后起名字叫 i996 。

其实就是 readme 的那三步,按照顺序操作就行。没有 docker 版本,这个东西就是给用户做内网穿透用的。配置内网地址就是在公众号回复设置里面设置就行了。i996 支持 tcp 了,所以转发 ssh 也没问题

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

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

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

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

© 2021 V2EX