# 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