proof-of-concept worked. rolling into main
This commit is contained in:
51
cmd/test-graphql-ws/README.md
Normal file
51
cmd/test-graphql-ws/README.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# GraphQL-WS Proof of Concept
|
||||
|
||||
This is a simple test script to verify we can send messages to Kosmi using the WebSocket GraphQL API directly, following the `graphql-ws` protocol.
|
||||
|
||||
## What This Tests
|
||||
|
||||
1. Connects to Kosmi's WebSocket endpoint (`wss://engine.kosmi.io/gql-ws`)
|
||||
2. Follows the graphql-ws protocol:
|
||||
- Sends `connection_init`
|
||||
- Waits for `connection_ack`
|
||||
- Sends a mutation using `subscribe` message type
|
||||
3. Attempts to send "Hello World from GraphQL-WS! 🎉" to the chat
|
||||
|
||||
## Protocol Details
|
||||
|
||||
Kosmi uses the [graphql-ws protocol](https://github.com/enisdenjo/graphql-ws/blob/master/PROTOCOL.md), which is different from the older `subscriptions-transport-ws`.
|
||||
|
||||
Key differences:
|
||||
- Uses `graphql-transport-ws` subprotocol
|
||||
- Both queries/mutations AND subscriptions use `type: "subscribe"`
|
||||
- Must send `connection_init` before any operations
|
||||
|
||||
## Running the Test
|
||||
|
||||
```bash
|
||||
# From the project root
|
||||
go run cmd/test-graphql-ws/main.go
|
||||
```
|
||||
|
||||
## Expected Behavior
|
||||
|
||||
If successful, you should see:
|
||||
1. ✅ WebSocket connected
|
||||
2. ✅ Connection acknowledged by server
|
||||
3. ✅ Message sent
|
||||
4. 📨 Response from server (either success or error)
|
||||
|
||||
## What We're Testing
|
||||
|
||||
This will help us determine if:
|
||||
- We can connect to Kosmi's WebSocket without browser automation
|
||||
- The authentication works (or what auth is needed)
|
||||
- We can send messages via GraphQL mutations over WebSocket
|
||||
- We can replace the UI automation approach with direct WebSocket
|
||||
|
||||
## Notes
|
||||
|
||||
- Change `roomID` in the code to match your Kosmi room
|
||||
- The script will keep running until you press Ctrl+C
|
||||
- All messages are logged for debugging
|
||||
|
||||
Reference in New Issue
Block a user