在一些通讯协议中存在者双向通讯的场景,也就是常说的Channel,既可以向Channel中发送消息,也可以从Channel中接收消息,如WebSocket RSocket Channel等,都是这一通讯模式。 这种交互性的通讯模式,存在者发送多个消息,而且在某些场景下可能还存在者消息的等待和发送顺序,对测试来说是比较麻烦的。 那么在JetBrains HTTP Client中是如何进行Channel的消息发送和消费的呢? 让我们看一个WebSocket的样例:
在收到WebSocket服务端回发的两个消息后,我们接下来就是连续发生两个消息,分别是"We send this message..."和"And this message together"
两个消息发送完毕后,接下来就是继续等待WebSocket服务端回发的消息,直到WebSocket连接被开发者主动关闭,如JetBrains IDE中点击close按钮。
借助消息分隔符===,我们可以向channel中发送多个消息,当然如果你需要等待服务端返回消息后再发送,那么消息分隔符号后添加一个 wait-for-server,这样HTTP Client就会等待服务端返回消息后再发送。
当然消息分隔符的设计,对命令行测试也非常友好,在图形化界面,如JetBrains IDE中,你可以使用图形化的界面进行交互式的消息输入,但是在命令行模式下,这个输入是非常麻烦的, 相反这种消息分隔符方式更编译命令行的测试。 httpx 0.35.0版本添加了WEBSOCKET method支持,这样你在命令行模式下也可以进行WEBSOCKET服务测试。