【发布时间】:2020-05-07 11:09:30
【问题描述】:
我正在尝试打开一个安全的 WebSocket,当连接打开时,我想发送 JSON 请求并等待响应。 需要它进行自动化后端测试。 但是,我试试这段代码,我得到了
websockets.exceptions.ConnectionClosedError: code = 3000 (registered), 没有理由
我的同事告诉我,我似乎打开了连接,握手然后立即关闭它!如果可能的话,我想保持开放! 这是返回“错误”3000的代码
import asyncio
import websockets
import ssl
import logging
import time
logger = logging.getLogger('websockets')
logger.setLevel(logging.INFO)
logger.addHandler(logging.StreamHandler())
serv = 'wss://"adress":"PORT"'
print("1")
ssl_context = ssl.SSLContext(protocol=ssl.PROTOCOL_TLSv1_2)
print("2")
json_s = {"msgType":1,"tag":12345,"username":"abc","password":"defghijk"}
print("3")
async def get_msg(uri):
async with websockets.connect(uri) as ws:
await ws.send(json_s)
print("4")
time.sleep(3)
print('data sent')
time.sleep(3)
resp = await ws.recv()
print("5")
time.sleep(3)
return resp
print("6")
loop = asyncio.get_event_loop().run_until_complete(get_msg(serv))
print("7")
loop.create_task(get_msg(serv))
print("8")
loop.run_forever()
print("9")
我来了
1
2
3
6
4
data sent
Traceback (most recent call last):
File "C:/Users/Korisnik/PycharmProjects/TACHYON/Test/Websockets doc test.py", line 34, in <module>
loop = asyncio.get_event_loop().run_until_complete(get_msg(serv))
File "C:\Users\Korisnik\AppData\Local\Programs\Python\Python38-32\lib\asyncio\base_events.py", line 608, in run_until_complete
return future.result()
File "C:/Users/Korisnik/PycharmProjects/TACHYON/Test/Websockets doc test.py", line 26, in get_msg
resp = await ws.recv()
File "C:\Users\Korisnik\PycharmProjects\TACHYON1\venv\lib\site-packages\websockets\protocol.py", line 509, in recv
await self.ensure_open()
File "C:\Users\Korisnik\PycharmProjects\TACHYON1\venv\lib\site-packages\websockets\protocol.py", line 812, in ensure_open
raise self.connection_closed_exc()
**websockets.exceptions.ConnectionClosedError: code = 3000 (registered), no reason**
Process finished with exit code 1
我被困在这里......
【问题讨论】:
-
你得到了什么,请更新你的问题
-
你有未闭合的字符串,但我想这只是一个错字?
-
@Zydnar 是的,我的错,是打字错误!我建立了连接,并且可以使用(例如)time.sleep() 让她保持活力,但是一旦我发送了一些东西,连接就关闭了,没有任何响应!我还是新手,也许我在代码中犯了一些明显的错误,或者可能是 CERT 问题?真的不知道!
-
我更改了一个代码,用这个我最接近解释发生了什么(已连接但在 SENT 连接关闭后立即!)
-
问题是错误 3000 - 3999 是特定于框架的,原因未指定。这是测试/客户端,对吧?服务器端会发生什么?
标签: python python-3.x websocket automated-tests wss