-
Notifications
You must be signed in to change notification settings - Fork 135
Open
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<string>(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.");
}
}
Metadata
Metadata
Assignees
Labels
No labels