某个服务运行一段时间会卡死,需要通过websocket获取数据来得知服务状态,决定什么时候重启。
这里遇到几个问题:
1、websocket的子程序是内置选择的,子程序处理完的数据如果写入response,看说明会被发送给ws服务器。而我希望我可以在主动作里自行处理response
2、我只需要获取一次websocket返回数据,动作里写了关闭websocket,但是还是会无限执行,不得不重启quicker来退出动作
3、子程序获取websocket动作的状态,得不到变量值
你的场景似乎是那种一次性的请求-响应模式,更符合http的逻辑。
1. 需要在处理响应的子程序里执行希望的动作。2. 可以试一下在主程序中发送消息后,等几秒,关闭websocket。 这时候子程序应该已经收到了对方的消息并且处理完成了。如果关闭之后还会有消息,可能是bug了。要看下具体是怎么写的动作。
3. 子程序是独立运行的,相当于一个临时动作。 所以不能和主程序互通的。 可以通过状态存取共享一下数据。
感谢回答。用http来的话,除了要登录,而且需要请求的数据量多,页面数据加载要好几秒。看到关键数据是通过ws来拉取的。
从逻辑上来看,执行的动作要放在主程序中执行,获得数字小于100,过几分钟后再次执行动作进行比较。这样的逻辑在子程序里无法实现。
ws返回的数据每秒刷新一次,我希望只获取一次数据。我设置在主程序里定时关闭ws连接,依然会无限循环执行动作
如果你是用ws连接的服务器获取数据,你可以通过网页js的new WebSocket("ws:*")连接服务器,将获取的数据写到一个网页的全局变量中,对这个变量的值进行监控比较,这样可以会容易一些这个模块要实现你说的这种情况理论上是可以的,可能逻辑上有些复杂,子程序需要自己处理好其逻辑关键