/// <summary> /// Start a websocket for observing order events /// </summary> public void OrderEventStart(object sender, EventArgs e) { /* a hack to just reuse the REST API client to sign out websocket headers */ var re = new Requests(); string url = "wss://api.gemini.com/v1/order/events"; try { GeminiClient.Wallet.Authenticate(re, new Gemini.Contracts.PrivateRequest() { Request = "/v1/order/events" }); if (GeminiClient.Wallet.Url().Contains("sandbox")) { url = "wss://api.sandbox.gemini.com/v1/order/events"; } Gemini.Websocket ws = new Websocket(url, OrderEventCallback, null); ws.AddHeader("X-GEMINI-APIKEY", re.Headers["X-GEMINI-APIKEY"]); ws.AddHeader("X-GEMINI-PAYLOAD", re.Headers["X-GEMINI-PAYLOAD"]); ws.AddHeader("X-GEMINI-SIGNATURE", re.Headers["X-GEMINI-SIGNATURE"]); ws.Connect(); sockets.Add(ws); } catch (Exception ex) { Logger.WriteException(Logger.Level.Error, ex); System.Windows.Forms.MessageBox.Show(ex.Message, "Error opening websocket"); } }