C# DonationAlerts не получаю сообщения о донате
Добавлял сообщения через мой сообщения, и тестовое оповещение
Использую библиотеку: Quobject.SocketIoClientDotNet.Client
Токен пробывал из OAuth приложения, и из основных настроек.
Проблема в заголовке
Подключение с двумя токенами проходит отлично.
Код:
class Program
{
static void Main(string[] args)
{
var socket = IO.Socket("wss://socket.donationalerts.ru:443");
if (socket != null)
{
MyRequest mr = new MyRequest()
{ token = "token", type = "minor" };
socket.On(Socket.EVENT_CONNECT, (fn) =>
{
socket.Emit("add-user", mr.ToJsonString());
socket.Emit("update");
socket.Emit("donation");
Console.WriteLine("Подключено");
});
socket.On("update", (data) =>
{
Console.WriteLine("Type: {0}\r\n", data);
});
socket.On(Socket.EVENT_CONNECT_ERROR, (data) =>
{
Console.WriteLine("Ошибка CONNECTION\n" + data);
});
socket.On(Socket.EVENT_CONNECT_TIMEOUT, () =>
{
Console.WriteLine("Ошибка TIMEOUT");
});
socket.On("donation", (donate) =>
{
Console.WriteLine("New donation 1");
Console.WriteLine(donate.ToString());
});
socket.Connect();
}
else
{
Console.WriteLine("Socket равен null");
}
}
private static void Call(Object args)
{
Console.WriteLine();
}
}
[JsonObject(MemberSerialization.OptIn)]
public class MyRequest
{
[JsonProperty("token")]
public string token { get; set; }
[JsonProperty("type")]
public string type { get; set; }
public string ToJsonString()
{
return JsonConvert.SerializeObject(this);
}
public static MyRequest Deserialize(string jsonString)
{
return JsonConvert.DeserializeObject<MyRequest>(jsonString);
}
}
Ответы (1 шт):
Как мне удалось узнать, для вебсокета donationalerts нужно рукопожатие, особое, для этого мне пришлось сделать некоторые действия:
Сначала, оправляем get запрос на адрес
https://socket2.donationalerts.ru/socket.io/?EIO=3&transport=polling&t=1234567
в t нужно подставить рандомное значение. Получаем sid, парсим его и уже делаем запрос POST с sid
https://socket2.donationalerts.ru/socket.io/?EIO=3&transport=polling&t=1234567&sid=your_sid
и в content запихиваем строку с токеном
"69:42[\"add-user\",{\"token\":\"Your_token\",\"type\":\"alert_widget\"}]"
Отправляем, и уже можно подключаться через websocket с параметром t и sid.
Поэтому для донатов пришлось писать свой класс.