public async void Close() { using (var releaser = await _WebSocketLock.LockAsync()) { MessageWebSocket.Close(0x8, ""); WatchingHeartbaetTimer?.Dispose(); } }
public ApplicationContext(CommModule commInstance, MessageWebSocket webSocket, ControlChannelTrigger channel, string id) { WebSocketHandle = webSocket; Channel = channel; ChannelId = id; CommInstance = commInstance; RecievedMessage = new ConcurrentQueue <string>(); }
void ws_MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) { var log = LogManager.GetLogger(Global.CallerName()); try { // Instead of using args.GetDataReader, using args.GetDataStream. and create DataReader ourself. // Because if there's no length to read then using GetDataReader would cause exception var dataReader = new DataReader(args.GetDataStream()); if (args.MessageType == SocketMessageType.Utf8) { using (dataReader) { // if there's no length to read then do nothing. preventing exception if (dataReader.UnconsumedBufferLength == 0) { return; } // The encoding and byte order need to match the settings of the writer // we previously used. dataReader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; dataReader.ByteOrder = Windows.Storage.Streams.ByteOrder.LittleEndian; var data = dataReader.ReadString(dataReader.UnconsumedBufferLength); log.Info("ws_MessageReceived e.Message= " + data); this.OnData(data); } } else if (args.MessageType == SocketMessageType.Binary) { using (dataReader) { // if there's no length to read then do nothing. preventing exception if (dataReader.UnconsumedBufferLength == 0) { return; } dataReader.ByteOrder = Windows.Storage.Streams.ByteOrder.LittleEndian; byte[] bytes = new byte[dataReader.UnconsumedBufferLength]; dataReader.ReadBytes(bytes); log.Info("ws_MessageReceived e.Message= " + bytes); this.OnData(bytes); } } else { throw new InvalidDataException("MessageWebSocketMessageReceivedEventArgs wrong MessageType "); } } catch (Exception e) { this.OnError("ws_MessageReceived", e); } }
public WebSocket(string url, Action <string> responseParser) { ws = new MessageWebSocket(); ws.Control.MessageType = SocketMessageType.Utf8; ws.MessageReceived += OnMessageReceived; uri = new Uri(url); this.responseParser = responseParser; Task.Run(() => Connect()); }
private void Dispose() { dataWriter.Dispose(); dataWriter = null; socket.Dispose(); socket = null; isAttached = false; isOpened = false; }
private void Websocket_Closed(IWebSocket sender, WebSocketClosedEventArgs args) { writer.DetachStream(); writer.Dispose(); writer = null; websocket = null; OnClose(); }
void InitializeSocket() { socket = new MessageWebSocket(); socket.Control.MessageType = SocketMessageType.Utf8; socket.MessageReceived += Socket_MessageReceived; socket.Closed += Socket_Closed; }
public void Disconnect() { #if WINDOWS_UWP websocket.Close(1000, "Disconnect function is called."); #else websocket.Close(); websocket = null; #endif }
void Websocket_MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) { if (OnMessaged != null) { var reader = args.GetDataReader(); reader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; OnMessaged(sender, new WebSocketEventArgs(reader.ReadString(reader.UnconsumedBufferLength))); } }
public void Close() { _DataWriter?.DetachStream(); _DataWriter = null; _CommentSessionWebSocket?.Close(1000, ""); _CommentSessionWebSocket = null; IsConnected = false; }
//The MessageReceived event handler. DON'T ACCESS CANVAS!!!! private void WebSock_MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) { DataReader messageReader = args.GetDataReader(); messageReader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; messageReader.ByteOrder = ByteOrder.LittleEndian; incomingMessageString = messageReader.ReadString(messageReader.UnconsumedBufferLength); ReceiveAndEnqueue(incomingMessageString); }
// one shared data writer; http://stackoverflow.com/a/39653730 public WebSocket(string Url) { url = TryGetUri(Url); socket = new MessageWebSocket(); socket.MessageReceived += OnMessageRecieved; socket.Closed += OnClosed; MessageWriter = new DataWriter(socket.OutputStream); SendLock = new System.Threading.Mutex(); }
private async Task WebSock_SendMessage(MessageWebSocket webSock, string message) { Debug.WriteLine("WebSock_SendMessage : " + message); DataWriter messageWriter = new DataWriter(webSock.OutputStream); messageWriter.WriteString(message); await messageWriter.StoreAsync(); }
private void MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) { var messageReader = args.GetDataReader(); messageReader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; var messageString = messageReader.ReadString(messageReader.UnconsumedBufferLength); this.OnMessageReceived?.Invoke(this, messageString); }
public Live2WebSocket(Mntone.Nico2.Live.Watch.Crescendo.CrescendoLeoProps props) { Props = props; MessageWebSocket = new MessageWebSocket(); MessageWebSocket.Control.MessageType = SocketMessageType.Utf8; MessageWebSocket.MessageReceived += MessageWebSocket_MessageReceived; MessageWebSocket.ServerCustomValidationRequested += MessageWebSocket_ServerCustomValidationRequested; MessageWebSocket.Closed += MessageWebSocket_Closed; }
void InitWinRT() { _webSocket = new WebSocket(_serverUri); _webSocket.OnMessage += WebSocketOnMessage; _webSocket.OnClose += WebSocketOnClose; _webSocket.OnOpen += WebSocketOnOpen; _webSocket.OnError += WebSocketOnError; _webSocket.ConnectAsync(); }
// Close connection private void Closed(IWebSocket sender, WebSocketClosedEventArgs args) { MessageWebSocket webSocket = Interlocked.Exchange(ref messageWebSocket, null); if (webSocket != null) { webSocket.Dispose(); } }
public WebSocketJavaScriptExecutor() { _webSocket = new MessageWebSocket(); _webSocket.Control.MessageType = SocketMessageType.Utf8; _webSocket.MessageReceived += OnMessageReceived; _injectedObjects = new JObject(); _callbacks = new Dictionary <int, TaskCompletionSource <JToken> >(); }
public async Task connect() { Debug.WriteLine("WSC connect()..."); if (socket == null) { socket = new MessageWebSocket(); if (userAgent != null) { socket.SetRequestHeader("X-Signal-Agent", userAgent); } socket.MessageReceived += OnMessageReceived; socket.Closed += OnClosed; try { Uri server = new Uri(wsUri); await socket.ConnectAsync(server); if (socket != null) { attempts = 0; connected = true; } //Connected(this, EventArgs.Empty); keepAliveTimer = new Timer(sendKeepAlive, null, TimeSpan.FromSeconds(KEEPALIVE_TIMEOUT_SECONDS), TimeSpan.FromSeconds(KEEPALIVE_TIMEOUT_SECONDS)); messageWriter = new DataWriter(socket.OutputStream); Debug.WriteLine("WSC connected..."); Connected?.Invoke(this, EventArgs.Empty); } catch (Exception e) { /*WebErrorStatus status = WebSocketError.GetStatus(e.GetBaseException().HResult); * * switch (status) * { * case WebErrorStatus.CannotConnect: * case WebErrorStatus.NotFound: * case WebErrorStatus.RequestTimeout: * Debug.WriteLine("Cannot connect to the server. Please make sure " + * "to run the server setup script before running the sample."); * break; * * case WebErrorStatus.Unknown: * throw; * * default: * Debug.WriteLine("Error: " + status); * break; * }*/ this.connected = false; ConnectionFailed?.Invoke(this, EventArgs.Empty); Debug.WriteLine("Unable to connect WSC"); } } }
public Live2WebSocket(LeoPlayerProps props) { Props = props; MessageWebSocket = new MessageWebSocket(); MessageWebSocket.Control.MessageType = SocketMessageType.Utf8; MessageWebSocket.MessageReceived += MessageWebSocket_MessageReceived; MessageWebSocket.ServerCustomValidationRequested += MessageWebSocket_ServerCustomValidationRequested; MessageWebSocket.Closed += MessageWebSocket_Closed; }
private void WebSocketMessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) { if (args.MessageType == SocketMessageType.Utf8) { string jsonOutput; using (var dataReader = args.GetDataReader()) { dataReader.UnicodeEncoding = UnicodeEncoding.Utf8; jsonOutput = dataReader.ReadString(dataReader.UnconsumedBufferLength); } var result = JsonConvert.DeserializeObject <Result>(jsonOutput); foreach (var receiver in TextReceivers) { receiver.OnTextReceived(result); } } else if (args.MessageType == SocketMessageType.Binary) { // the binary output is the text to speech audio using (var dataReader = args.GetDataReader()) { dataReader.ByteOrder = ByteOrder.LittleEndian; // Read the data from the audio returned - convert to [-1.0f, 1.0f] // then we can use an AudioClip in Unity and set the data into it and // play it back... var numBytes = dataReader.UnconsumedBufferLength; // Skip over the RIFF header for PCM 16bit 16kHz mono output var headerSize = 44; var bytes = new byte[headerSize]; dataReader.ReadBytes(bytes); // skip the header var numSamples = (int)(numBytes - headerSize); float[] data = new float[numSamples]; //var count = await dataReader.LoadAsync(numSamples); int numInt16s = numSamples / sizeof(Int16); for (int i = 0; i < numInt16s; i++) { data[i] = dataReader.ReadInt16() / (float)Int16.MaxValue; } // Notify observers with this audio data.. (probably should notify the header // to future-proof but skip that for now - API data is signed 16bit PCM mono audio) _args.Data = data; foreach (var receiver in AudioReceivers) { receiver.OnAudioReceived(_args); } } } }
private MessageWebSocket GetMessageWebSocket() { var socket = new MessageWebSocket(); socket.Control.MessageType = SocketMessageType.Utf8; socket.MessageReceived += HandleMessage; socket.Closed += HandleClosed; return(socket); }
private void WebSock_MessageReceived(MessageWebSocket sender, MessageWebSocketMessageReceivedEventArgs args) { DataReader messageReader = args.GetDataReader(); messageReader.UnicodeEncoding = UnicodeEncoding.Utf8; string messageString = messageReader.ReadString(messageReader.UnconsumedBufferLength); OnMessageReceived?.Invoke(messageString); messageReader.Dispose(); }
public void Close() { if (WebSocket != null) { WebSocket.Dispose(); WebSocket = null; isAlive = false; OnClosed?.Invoke(null, EventArgs.Empty); } }
/// <summary> /// Closes the connection to the websocket. /// </summary> /// <returns>The task of closing the websocket connection.</returns> private async Task CloseInternalAsync() { await Task.Run(() => { this.websocket.Close(WebSocketCloseStatus_NormalClosure, "Closed due to user request."); this.websocket.Dispose(); this.websocket = null; this.IsConnected = false; }); }
// This may be triggered remotely by the server or locally by Close/Dispose() private void Closed(IWebSocket sender, WebSocketClosedEventArgs args) { MarshalText(OutputField, "Closed; Code: " + args.Code + ", Reason: " + args.Reason + "\r\n"); if (messageWebSocket != null) { messageWebSocket.Dispose(); messageWebSocket = null; } }
public void Close() { #if WINDOWS_UWP ws.Close(1000, "Disconnect function is called."); ws = null; #else ws.Close(); ws = null; #endif }
private void Closed(IWebSocket sender, WebSocketClosedEventArgs args) { System.Diagnostics.Debug.WriteLine("Closed; Code: " + args.Code + ", Reason: " + args.Reason); if (messageWebSocket != null) { messageWebSocket.Dispose(); messageWebSocket = null; } }
private void CreateSocket() { _socket?.Dispose(); _socket = new MessageWebSocket(); _socket.Control.MessageType = SocketMessageType.Utf8; _socket.MessageReceived += HandleMessage; _socket.Closed += HandleClosed; _dataWriter?.Dispose(); _dataWriter = new DataWriter(_socket.OutputStream); }
private static void WebSocket_ReceivedMessage(MessageWebSocket ws, MessageWebSocketMessageReceivedEventArgs args) { DataReader reader = args.GetDataReader(); reader.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf8; string result = reader.ReadString(reader.UnconsumedBufferLength); //Here, you need to put receive message to the chat room view model. Debug.WriteLine(result); }