Forget
Subscription
Immediately cancel the real-time stream of messages with a specific ID.
2 breaking changes - code updates required
Breaking Changes:
Stream ID pattern validation relaxed and response field now always required.
Quick comparison
| Aspect | Legacy | New | Action required |
|---|---|---|---|
Endpoint ✅ Same | forget | forget | None |
Auth Required ✅ Same | No | No | None |
Stream ID Pattern ⚠️ Changed | ^[\w-]{32,128}$ | Any string | None |
Response Field ⚠️ Changed | Optional | Required | Update response handling |
Breaking changes
1. Stream ID pattern validation relaxed
What Changed: Legacy enforced a strict pattern ^[\w-]{32,128}$ for stream IDs. New accepts any string value, providing more flexibility for stream identification.
2. Response field always present
What Changed: In Legacy, the forget field in the response was optional. In New, this field is always present and required, ensuring consistent response handling.
Request structure
Legacy Request Example
1{
2 "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
3 // Must match pattern: ^[\w-]{32,128}$
4}New Request Example
1{
2 "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
3 // Any string value accepted
4}Response structure
Legacy Response Example
1{
2 "forget": 1, // Optional field
3 "echo_req": {
4 "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
5 },
6 "msg_type": "forget"
7}New Response Example
1{
2 "forget": 1, // ⚠️ Now required - always present
3 "echo_req": {
4 "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
5 },
6 "msg_type": "forget"
7}Code examples
Legacy Implementation
1async function cancelStream(streamId) {
2 const request = {
3 forget: streamId // Must be 32-128 chars, alphanumeric, underscore, or hyphen
4 };
5
6 ws.send(JSON.stringify(request));
7
8 // Handle response
9 ws.onmessage = (msg) => {
10 const response = JSON.parse(msg.data);
11 if (response.msg_type === 'forget') {
12 if (response.forget === 1) {
13 console.log('Stream successfully cancelled');
14 } else if (response.forget === 0) {
15 console.log('Stream did not exist');
16 } else {
17 console.log('Stream cancellation status unknown');
18 }
19 }
20 };
21}New Implementation
1async function cancelStream(streamId) {
2 const request = {
3 forget: streamId // Any string value accepted
4 };
5
6 ws.send(JSON.stringify(request));
7
8 // Handle response
9 ws.onmessage = (msg) => {
10 const response = JSON.parse(msg.data);
11 if (response.msg_type === 'forget') {
12 // forget field is always present in New
13 if (response.forget === 1) {
14 console.log('Stream successfully cancelled');
15 } else if (response.forget === 0) {
16 console.log('Stream did not exist');
17 }
18 }
19 };
20}