public SendMessageResponse Send(OutgoingPushMessageList list) { WebSocketRequestMessage requestmessage = new WebSocketRequestMessage() { Id = BitConverter.ToUInt64(Util.getSecretBytes(sizeof(long)), 0), Verb = "PUT", Path = $"/v1/messages/{list.getDestination()}", Body = ByteString.CopyFrom(Encoding.UTF8.GetBytes(JsonUtil.toJson(list))) }; requestmessage.Headers.Add("content-type:application/json"); var t = Websocket.SendRequest(requestmessage); t.Wait(); if (t.IsCompleted) { var response = t.Result; if (response.Item1 < 200 || response.Item1 >= 300) { throw new IOException("non-successfull response: " + response.Item1 + " " + response.Item2); } return(JsonUtil.fromJson <SendMessageResponse>(response.Item2)); } else { throw new IOException("timeout reached while waiting for confirmation"); } }