簡體   English   中英

c# - 如何在c#中使用“授權”、“承載”、令牌創建指向URL的websocket

[英]How to create a websocket to a URL using "Authorization", "Bearer", token in c#

我需要在 c# 中為特定的 url(無法顯示)創建一個 websocket。 是否有類似於 Java 中的 WebSocket API 或 C# 中的 libwebsockets 的東西?

我已經按照一些 SO 答案嘗試使用 WebSocketSharp 和 ChilKat。 還嘗試使用 Microsoft 的 WebSocket 命名空間。 但總是收到“未授權”錯誤 401。我也嘗試執行 Http get 並嘗試按照 MDN 文檔中創建 WebSocket 服務器的教程添加標頭以將套接字升級到 Websocket,但只得到重定向的網頁作為回報。 這是我用於 HTTP 升級請求的代碼。 我是 C# 的初學者。

ServicePointManager.Expect100Continue = true;
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls
                                                    | SecurityProtocolType.Tls11
                                                    | SecurityProtocolType.Tls12
                                                    | SecurityProtocolType.Ssl3;
            ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
            {
                return true;
            };
            var http = (HttpWebRequest)WebRequest.Create(new Uri(baseAddress));
            http.AllowAutoRedirect = false;
            http.UseDefaultCredentials = true;
            http.PreAuthenticate = true;
            http.Credentials = CredentialCache.DefaultCredentials;
            http.Proxy.Credentials = CredentialCache.DefaultCredentials;
            http.Accept = "application/json";
            http.ContentType = "application/json";
            http.Method = "GET";
            http.Connection = "Open";
            http.Headers.Add("Authorization", "Bearer " + Token);
            //http.Headers.Add("Connection", "Upgrade");
            http.Headers.Add("Upgrade", "websocket");
            http.KeepAlive = true;

我想要實現的是類似的東西,

Websocket socket = new Websocket();
socket.addHeader(Authorization, Bearer, Token);
socket.connect(); 

提前感謝您的任何投入。

我正在使用ClientWebSocket使用 OAuth 令牌連接到 Zendesk 聊天流 API,如下所示:

var webSocket = new ClientWebSocket();
webSocket.Options.SetRequestHeader("Authorization", $"Bearer {_oauthToken}");
var cts = new CancellationTokenSource();
await webSocket.ConnectAsync(new Uri(url), cts.Token);

這個對我有用!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM