예제 #1
0
    public static int OnReceiveCallback(byte[] data, uint datalen, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES error)
    {
        Debug(AppConstants.DebugColorCyan, ".............. Callback Received.");
        try
        {
            string         s           = Encoding.UTF8.GetString(data, 0, data.Length);
            PushBulletType messageType = new PushBulletType();
            var            jo          = JObject.Parse(s);

            messageType.type    = (string)jo["type"];
            messageType.subtype = (string)jo["subtype"];
            Debug(AppConstants.DebugColorCyan, ">>>>>>>>>>>> type=", messageType.type);
            Debug(AppConstants.DebugColorCyan, ">>>>>>>>>>>> subtype=", messageType.subtype);

            if (messageType.type == "tickle")
            {
                if (messageType.subtype == "push")
                {
                    GetPushInformation();
                }
            }
        }
        catch (Exception e)
        {
            Debug(AppConstants.DebugColorRed, ">>>>>>>>>>>> OnReceiveCallback failed=", e.ToString());
            //ErrorLog.Exception("PushBulletSystem> OnReceiveCallback() Exception:", e);
            return(-1);
        }
        return(0);
    }
        /// <summary>
        ///
        /// </summary>
        /// <param name="data"></param>
        /// <param name="length"></param>
        /// <param name="opcode"></param>
        /// <param name="err"></param>
        int Websocket_ReceiveCallback(byte[] data, uint length, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode,
                                      WebSocketClient.WEBSOCKET_RESULT_CODES err)
        {
            if (opcode == WebSocketClient.WEBSOCKET_PACKET_TYPES.LWS_WS_OPCODE_07__TEXT_FRAME)
            {
                var rx = System.Text.Encoding.UTF8.GetString(data, 0, (int)length);
                if (rx.Length > 0)
                {
                    ParseStreamRx(rx);
                }
                WSClient.ReceiveAsync();
            }

            else if (opcode == WebSocketClient.WEBSOCKET_PACKET_TYPES.LWS_WS_OPCODE_07__CLOSE)
            {
                Debug.Console(1, this, "Websocket disconnect received from remote");
                CleanUpWebsocketClient();
            }
            else
            {
                Debug.Console(1, this, "websocket rx opcode/err {0}/{1}", opcode, err);
                WSClient.ReceiveAsync();
            }
            return(0);
        }
        static int hbWebSocketClient_OnMessage(byte[] data, uint length, WebSocketClient.WEBSOCKET_PACKET_TYPES type, WebSocketClient.WEBSOCKET_RESULT_CODES result)
        {
            if (type == WebSocketClient.WEBSOCKET_PACKET_TYPES.LWS_WS_OPCODE_07__CLOSE)
            {
                hbWebSocketClient_OnClose(WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_ERROR, null);
            }
            _hbWebSocketClient.ReceiveAsync();
            var    e    = Encoding.Default.GetString(data, 0, data.Length);
            var    o    = JObject.Parse(e);
            string name = (string)o["payload"]["name"];

            //determine who the device belongs to....
            if (HBLightbulb.CheckIfDeviceExists(name) > 0)
            {
                HBLightbulb.ProcessWebsocketResponse(o);
            }
            else if (HBSwitch.CheckIfDeviceExists(name) > 0)
            {
                HBSwitch.ProcessWebsocketResponse(o);
            }
            else if (HBFan.CheckIfDeviceExists(name) > 0)
            {
                HBFan.ProcessWebsocketResponse(o);
            }
            else if (HBOutlet.CheckIfDeviceExists(name) > 0)
            {
                HBOutlet.ProcessWebsocketResponse(o);
            }
            else if (HBDoor.CheckIfDeviceExists(name) > 0)
            {
                HBDoor.ProcessWebsocketResponse(o);
            }
            else if (HBGarageDoor.CheckIfDeviceExists(name) > 0)
            {
                HBGarageDoor.ProcessWebsocketResponse(o);
            }
            else if (HBWindow.CheckIfDeviceExists(name) > 0)
            {
                HBWindow.ProcessWebsocketResponse(o);
            }
            else if (HBOccupancySensor.CheckIfDeviceExists(name) > 0)
            {
                HBOccupancySensor.ProcessWebsocketResponse(o);
            }
            else if (HBThermostat.CheckIfDeviceExists(name) > 0)
            {
                HBThermostat.ProcessWebsocketResponse(o);
            }
            else if (HBSecuritySystem.CheckIfDeviceExists(name) > 0)
            {
                HBSecuritySystem.ProcessWebsocketResponse(o);
            }
            return(0);
        }
예제 #4
0
 public static int ReceiveCallback(byte[] data, uint datalen, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES error)
 {
     try
     {
         string s = Encoding.UTF8.GetString(data, 0, data.Length);
         if (s.Contains("push"))
         {
             getPush();
         }
     }
     catch (Exception e)
     {
         return(-1);
     }
     return(0);
 }
예제 #5
0
        public int ReceiveCallback(byte[] data, uint datalen, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES error)
        {
            try
            {
                string receiveBuffer = Encoding.UTF8.GetString(data, 0, data.Length);
                if (debug > 0)
                {
                    CrestronConsole.Print("\n Websocket ReceiveCallback receiveBuffer: " + receiveBuffer);
                }

                if (receiveBuffer.Contains("webSocketClientKeepAlive"))
                {
                    keepAliveMessageReceived = true;
                    sendDataAsync("webSocketClientKeepAlive");
                }

                else if (receiveBuffer.Contains("webSocketClientDisconnect"))
                {
                    //Prepare keepAlive check routine to disconnect
                    //We can't just call disconnect here because ReceiveCallback must return a value before the socket can disconnect.
                    keepAliveMessageReceived = false;
                    keepAliveCounter         = 2;
                }

                else
                {
                    dataReceiveEvent(receiveBuffer);
                }

                resultCodes = wsc.ReceiveAsync();
                if (debug > 0)
                {
                    CrestronConsole.Print("\n Websocket ReceiveAsync resultCodes: " + resultCodes.ToString());
                }
            }
            catch (Exception e)
            {
                if (debug > 0)
                {
                    CrestronConsole.Print("\n Websocket ReceiveCallback exception: " + e.Message);
                }
                return(-1);
            }
            return(0);
        }
        public int ReceiveCallback(
            byte[] data,
            uint datalen,
            WebSocketClient.WEBSOCKET_PACKET_TYPES opcode,
            WebSocketClient.WEBSOCKET_RESULT_CODES error)
        {
            try
            {
                if (opcode == WebSocketClient.WEBSOCKET_PACKET_TYPES.LWS_WS_OPCODE_07__CLOSE)
                {
                    // Pass "true" as callback to ensure the callback
                    // will report disconnected instead of success
                    _socket.DisconnectAsync(true);
                    return((int)error);
                }

                string dataReceived         = Encoding.Default.GetString(data, 0, (int)datalen);
                DataEventArgs <string> args = new DataEventArgs <string>(dataReceived);
                DataReceived.Invoke(this, args);

                Log(string.Format("RX: {0}", dataReceived));


                // Handle reconnect
                if (error != WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_ALREADY_CONNECTED ||
                    error != WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_PENDING ||
                    error != WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_SUCCESS)
                {
                    ConnectClient();
                }
            }
            catch (Exception e)
            {
                if (EnableLogging)
                {
                    Log(string.Format("WebSocketTransport : Receive Callback Exception: {0}", e.Message));
                }
            }
            finally
            {
                _socket.ReceiveAsync();
            }
            return((int)error);
        }
예제 #7
0
 private int WebSocketDataReceived(byte[] bytesIn, uint length, WebSocketClient.WEBSOCKET_PACKET_TYPES packetType, WebSocketClient.WEBSOCKET_RESULT_CODES results)
 {
     try
     {
         string           incomingStream    = Encoding.UTF8.GetString(bytesIn, 0, bytesIn.Length);
         PushBulletStream pushBulletSteamIn = JsonConvert.DeserializeObject <PushBulletStream>(incomingStream);
         if (pushBulletSteamIn.subtype != null)
         {
             PushBulletGetMissedPushes(doorbellAccessToken, doorbellIden);
         }
         webSocketClient.ReceiveAsync();
     }
     catch (Exception e)
     {
         ErrorLog.Error("SocketDataReceived Error: {0}", e.Message);
         return(-1);
     }
     return(0);
 }
 public int _ReceiveCallback(byte[] data, uint datalen, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES error)
 {
     //CrestronConsole.PrintLine("ReceiveCallBack\r\n");
     try
     {
         string s = Encoding.UTF8.GetString(data, 0, data.Length);
         //CrestronConsole.Print("ReceiveCallback : " + s + "\n");
         if (s.Contains("push"))
         {
             getPush();
         }
         //ErrorLog.Notice(s);
     }
     catch (Exception e)
     {
         return(-1);
     }
     return(0);
 }
예제 #9
0
        public int ReceiveCallback(byte[] data, uint datalen,
                                   WebSocketClient.WEBSOCKET_PACKET_TYPES opcode,
                                   WebSocketClient.WEBSOCKET_RESULT_CODES error)
        {
            try
            {
                string data_rcv = Encoding.UTF8.GetString(data, 0, data.Length);
                CrestronConsole.PrintLine("[WSClient.ReceiveCallback] data rcv: {0}", data_rcv);

                if (data_rcv.Trim() != "")
                {
                    JObject obj      = JObject.Parse(data_rcv);
                    int     msg_type = int.Parse(obj["msg_type"].ToString());
                    string  dt       = obj["dt"].ToString();
                    switch (msg_type)
                    {
                    case (int)CommonUtil.MSG_TYPE.MSG_PONG:
                        CrestronConsole.PrintLine("[WSClient.ReceiveCallback] rcv PONG");
                        ping_count = 0;
                        break;

                    case (int)CommonUtil.MSG_TYPE.MSG_LIGHT_SWITCH_ONOFF:
                        CrestronConsole.PrintLine("[WSClient.ReceiveCallback] rcv SWITCH ON/OFF");
                        switch_on_off(dt);
                        break;

                    case (int)CommonUtil.MSG_TYPE.MSG_LIGHT_CHANGE_BRIGHTNESS:
                        change_brightness(dt);
                        break;

                    default:
                        break;
                    }
                }
            }
            catch (Exception ex) {
                CrestronConsole.PrintLine("[WSClient.ReceiveCallback] exception : {0}", ex.ToString());
            }
            return(0);
        }
예제 #10
0
        private int receiveWebsocket(byte[] data, uint len, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES e)
        {
            string sdata = Encoding.ASCII.GetString(data, 0, (int)len);

            try {
                WSData msg = JsonConvert.DeserializeObject <WSData>(sdata);
                if (msg.type != "nop")
                {
                    debug("websocket receive: " + sdata);
                }

                if (msg.type == "tickle" && msg.subtype == "push")
                {
                    checkPushes();
                }
            } catch (Exception) {
                debug("unknown websocket data received");
            }
            wsCli.ReceiveAsync();

            return(0);
        }
예제 #11
0
        private int ReceiveCallback(byte[] bytes, uint bytesLength, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES error)
        {
            if (OnReceive != null)
            {
                try
                {
                    RxBuffer = Encoding.ASCII.GetString(bytes, 0, (int)bytesLength);
                    OnReceive((short)opcode, (short)error);
                }
                catch (Exception ex)
                {
                    CrestronConsole.PrintLine("Exception in ReceiveCallback: {0}", ex.Message);
                }
            }

            if (error == WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_SUCCESS)
            {
                wsc.ReceiveAsync();
            }

            return((int)error);
        }
예제 #12
0
        public int ReceiveCallback(byte[] data, uint datalen, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, /*JW MAC*/ WebSocketClient.WEBSOCKET_RESULT_CODES error)
        {
            string sData = Encoding.ASCII.GetString(data, 0, data.Length);

            try
            {
                socketDataType msg = JsonConvert.DeserializeObject <socketDataType>(sData);
                CrestronConsole.PrintLine("Received data: " + sData.ToString());

                if (msg.type == "nop")
                {
                    WSSReceivedPush = false;
                    flag            = false;
                }
                if (msg.type == "tickle")
                {
                    WSSReceivedPush = true;
                    if (onReceivePush != null && flag == false)
                    {
                        onReceivePush(null, null);
                        flag = true;
                    }
                    else if (onReceivePush != null && flag == true)
                    {
                        flag = false;
                    }
                }
            }
            catch (Exception e)
            {
                CrestronConsole.PrintLine("Unknown Data Received" + e.ToString());
                Disconnect();
            }
            MyWSConnection.ReceiveAsync();
            return(0);
        }
예제 #13
0
        public int ReceiveCallback(byte[] data, uint datalen, WebSocketClient.WEBSOCKET_PACKET_TYPES opcode, WebSocketClient.WEBSOCKET_RESULT_CODES error)
        {
            string sData = Encoding.ASCII.GetString(data, 0, data.Length);

            try
            {
                socketData msg = JsonConvert.DeserializeObject <socketData>(sData);
                if (msg.type != "nop")
                {
                    CrestronConsole.PrintLine("Received data:" + sData.ToString());
                }
                if (msg.type == "tickle" && msg.subtype == "push")
                {
                    checkPushes();
                }
            }
            catch (Exception e)
            {
                CrestronConsole.PrintLine("Unknown Data Received" + e.ToString());
                DisconnectWebSocket();
            }
            wsc.ReceiveAsync();
            return(0);
        }
        private int ClientReceiveCallBack(byte[] data, uint length, WebSocketClient.WEBSOCKET_PACKET_TYPES opCode, WebSocketClient.WEBSOCKET_RESULT_CODES resultCode)
        {
            try
            {
                if (opCode == WebSocketClient.WEBSOCKET_PACKET_TYPES.LWS_WS_OPCODE_07__CLOSE)
                {
                    _client.DisconnectAsync(this);

                    return(0);
                }
                else if (resultCode == WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_SUCCESS)
                {
                    var sData = Encoding.ASCII.GetString(data, 0, data.Length);

                    ReceiveDataEventArgs e = new ReceiveDataEventArgs();
                    e.ID   = ID;
                    e.Data = sData;

                    OnReceiveDataChange(e);

                    if (onDataReceived != null)
                    {
                        onDataReceived(sData);
                    }

                    return(1);
                }
                else if (resultCode == WebSocketClient.WEBSOCKET_RESULT_CODES.WEBSOCKET_CLIENT_INVALID_HANDLE)
                {
                    _client.DisconnectAsync(this);

                    return(0);
                }
                else
                {
                    return(0);
                }
            }
            catch (SocketException se)
            {
                if (debugMode)
                {
                    ErrorLog.Exception(string.Format("WebSocketCleint ID {0} SocketException Occured in ClientReceiveCallBack", ID), se);
                }

                return(0);
            }
            catch (Exception e)
            {
                if (debugMode)
                {
                    ErrorLog.Exception(string.Format("WebSocketCleint ID {0} Exception Occured in ClientReceiveCallBack", ID), e);
                }

                return(0);
            }
            finally
            {
                if (_client.Connected)
                {
                    _client.ReceiveAsync();
                }
            }
        }