Как я могу использовать WSS в качестве префикса в WebRequest? - PullRequest
0 голосов
/ 22 января 2019

Я хотел запрограммировать библиотеку для DiscordBot на C #, но прежде чем я смогу отправить сообщение, я должен отправить запрос WSS POST на Discord Gateway, который не работает со стандартным WebRequest.

Вместо этого я попытался использовать HTTPS, но WSS - это еще один префикс, который WebRequest не понимает. Использование WebRequest.Registerprefix () также не работало, но я думаю, что это может работать с правильным интерфейсом.

Вот код:

private void Identify(string token)
{
    string reqContent = "{"+
    "\"token\": \"" + token+ "\","+
    "\"properties\": {"+
    "\"$os\": \"linux\","+
    "\"$browser\": \"disco\","+
    "\"$device\": \"disco\"" +
    "},"+
    "\"compress\": true,"+
    "\"large_threshold\": 250,"+
    "\"shard\": [1, 10],"+
    "\"presence\": {"+
    "\"game\": {"+
    "\"name\": \"Cards Against Humanity\","+
    "\"type\": 0"+
    "},"+
    "\"status\": \"dnd\","+
    "\"since\": 91879201,"+
    "\"afk\": false"+
    "}"+
    "}";    //Example from discord.gg

    WebRequest req = WebRequest.Create(
    "wss://gateway.discord.gg/?v=" + gatewayVersion + "&encoding=json");  
    //Here is the Exception

    req.Method = "POST";
    var bytes = Encoding.ASCII.GetBytes(reqContent);
    req.GetRequestStream().Write(bytes, 0, bytes.Length);

    WebResponse response = req.GetResponse();
    Console.WriteLine(response.GetResponseStream().ToString());
}
...