最近工作需要测试websocket接口,之前一直用Postman做http请求这种短连接的发包工具,现在发现Postman v8.5以上的版本支持websocket了,在此记录一下。

首先New一个WebSocket Request

在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

在Postman中输入 WebSocket API URL,点击connect建立连接,就可以无缝发送和接收消息了。

可以发送text纯文本,如果数据格式为JSON 和 XML,会有语法突出显示和自动格式化 ,还可以编写原始 ArrayBuffer 消息。

超时会提示连接已断开

发送和接收的数据会在下方按顺序显示

历史功能:

还可以在 Postman 侧边栏的历史记录部分重新访问之前的 WebSocket 会话。不仅可以查看历史会话的消息,还可以重用相同的 API。

附加:(之前了解websockt协议的时候,用python模拟了一个简单的,websocket客户端和服务器的通信过程,并监控了进程所占用的句柄数和服务器上的网络连接情况)

服务端:

#! python3

# SocketTestClient

# -*- coding:utf-8 -*-

import socket

import os

import subprocess

import time

host = '0.0.0.0'

port = 9918

host = socket.gethostname()

print('客户端host = ',host)

print("客户端请求PID = %i" % (os.getpid(),))

obj = socket.socket()

obj.connect((host, port))

print('netstat -nlp | grep %s' % port)

os.system('netstat -nlp | grep %s' % port)

j = 0

while True:

obj.send(bytes("这是客户端第 %s 条消息! " % j, encoding="utf-8"))

#time.sleep(5)

j = j + 1

print("发送了 %s 条!" %j)

if j == 5:

obj.send(bytes("End", encoding="utf-8"))

ret = str(obj.recv(1024), encoding="utf-8")

print('ret = ',ret)

if ret == 'Finish!':

obj.close()

break

else:

continue

客户端:

#! python3

# SocketTest.py

# -*- coding:utf-8 -*-

import socket

import os

import time

def socketTest():

while True:

ret = str(conn.recv(1024), encoding="utf-8")

print(ret)

if 'End' in ret:

print('连接结束-End')

print('---------------------------------')

conn.sendall(bytes("收到断开连接信息-End!", encoding="utf-8"))

conn.close()

sk.close #不发送fin包

conn.sendall(bytes("我再发!", encoding="utf-8"))

conn.sendall(bytes("我再发!", encoding="utf-8"))

os.system('netstat -nlp | grep %s' % port)

break

else:

print('Not close')

continue

if __name__ == '__main__':

while True:

host = '0.0.0.0'

port = 9918

host = socket.gethostname()

print(host)

print("PID = %i" % (os.getpid(),))

sk = socket.socket()

sk.bind((host, port))

sk.listen(60)

# sk.settimeout(10)

print('端口监听中...')

os.system("netstat -nlp|grep :%i" % (port,))

print('客户端返回连接信息')

conn, address = sk.accept()

print('连接中...')

print('连接来自: ', address)

print('---------------------------------')

print("lsof -p %i" % (os.getpid(),))

os.system("lsof -p %i" % (os.getpid(),))

print('---------------------------------')

print('netstat -nlp | grep %s' % port)

os.system('netstat -nlp | grep %s' % port)

print('---------------------------------')

print('ls /proc/%i/fd |wc -l '% (os.getpid(),))

os.system('ls /proc/%i/fd |wc -l '% (os.getpid(),))

#socketTest()

最后给大家分享一下我的一些学习资料: 以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

关注下方我的微信公众号免费领取!↓ ↓ ↓ ↓ ↓

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: