46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
from json import dumps, loads
|
|
|
|
import websockets
|
|
|
|
|
|
# Define the asynchronous function to test the WebSocket connection
|
|
|
|
|
|
async def test():
|
|
# Establish a WebSocket connection with the specified URL
|
|
async with websockets.connect('wss://chatgpt.func.icu/conversation+ws') as wss:
|
|
|
|
# Prepare the message payload as a JSON object
|
|
payload = {
|
|
'content_type': 'text',
|
|
'engine': 'chat-gpt',
|
|
'parts': ['hello world'],
|
|
'options': {}
|
|
}
|
|
|
|
# Send the payload to the WebSocket server
|
|
await wss.send(dumps(obj=payload, separators=(',', ':')))
|
|
|
|
# Initialize a variable to track the end of the conversation
|
|
ended = None
|
|
|
|
# Continuously receive and process messages until the conversation ends
|
|
while not ended:
|
|
try:
|
|
# Receive and parse the JSON response from the server
|
|
response = await wss.recv()
|
|
json_response = loads(response)
|
|
|
|
# Print the entire JSON response
|
|
print(json_response)
|
|
|
|
# Check for the end of the conversation
|
|
ended = json_response.get('eof')
|
|
|
|
# If the conversation has not ended, print the received message
|
|
if not ended:
|
|
print(json_response['content']['parts'][0])
|
|
|
|
# Handle cases when the connection is closed by the server
|
|
except websockets.ConnectionClosed:
|
|
break
|