graphql-dotnet / graphql-dotnet/graphql-client

GraphQL subscription error missing header

Open
#662 3 comments 0 reactions 0 assignees View on GitHub
Dominant language
C#
Stars
648
Forks
136
PR merge metrics
No merged PRs in 30d

Description

I am trying to use AppSync for my project. Although I have handled everything according to the design documentation, I keep encountering the error:
` {"payload":{"errors":[{"message":"Required headers are missing.","errorCode":400}]},"type":"connection_error"} `
every time I create a subscription to listen. Is this a bug, or am I missing something? Please help me resolve this issue.

public static class AppSyncService
{
private static GraphQLHttpClient _client;
private static IDisposable _subscription;
private static string _apiUrl;
private static string _wssUrl;
private static string _apiKey;
private static string _serverID;
public static event Action OnNewItemReceived;

public static void Initialize(string apiUrl, string wssUrl, string apiKey, string serverID)
{
_apiUrl = apiUrl;
_wssUrl = wssUrl;
_apiKey = apiKey;
_serverID = serverID;

ConnectToAppSync();
}

private static void ConnectToAppSync()
{
var options = new GraphQLHttpClientOptions
{
EndPoint = new Uri(_apiUrl),
WebSocketEndPoint = new Uri(_wssUrl),
WebSocketProtocol = "graphql-ws",
MediaType = "application/json",
};

_client = new GraphQLHttpClient(options, new NewtonsoftJsonSerializer());
_client.HttpClient.DefaultRequestHeaders.Add("x-api-key", _apiKey);

Subscribe(_serverID);
}

private static void Subscribe(object variables)
{
try
{
var request = new GraphQLRequest
{
Query = @"
subscription MySubscription($room_id: String!) {
onCreateMyChatMessageModel(room_id: $room_id) {
display_name
message_body
message_type
msg_id
room_id
timestamp
timestamp_msg_id
user_id
}
}",
Variables = variables
};

var subscriptionStream = _client.CreateSubscriptionStream(request);

_subscription = subscriptionStream.Subscribe(
source =>
{
var newItem = source.Data;
Debug.Log($"AppSync New item created: {newItem}");

OnNewItemReceived?.Invoke(newItem);
},
error => Debug.Log($"AppSync error: {error.Message}"),

() => Debug.Log("AppSync subscription completed."));
}
catch (Exception e)
{
Debug.Log($"AppSync subscribe error {e}");
}
}
private static void Dispose()
{
_subscription?.Dispose();
_client.Dispose();
Debug.Log("AppSync subscription and client disposed.");
}
}

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.