예제 #1
0
        /// <summary>
        /// Reads data from the NetworkStream.
        /// </summary>
        /// <param name="buffer"></param>
        /// <param name="offset"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public override int Read(byte[] buffer, int offset, int count)
        {
#if WINDOWS_UWP || WINDOWS_APP || WINDOWS_PHONE_APP || WINDOWS_PHONE_81
            return(_inputStream.Read(buffer, offset, count));
#elif __ANDROID__
            return(_socket.InputStream.Read(buffer, offset, count));
#elif UNITY
            return(_socket.Receive(buffer, count, 0));
#else
            return(0);
#endif
        }
예제 #2
0
        private void OnStreamReady(object sender, NetMQSocketEventArgs e)
        {
            byte[] identity = m_stream.Receive();

            WebSocketClient client;

            if (!m_clients.TryGetValue(identity, out client))
            {
                client = new WebSocketClient(m_stream, identity);
                client.IncomingMessage += OnIncomingMessage;
                m_clients.Add(identity, client);

                OnNewClient(identity);
            }

            client.OnDataReady();

            if (client.State == WebSocketClientState.Closed)
            {
                m_clients.Remove(identity);
                client.IncomingMessage -= OnIncomingMessage;
                OnClientRemoved(identity);
            }
        }