コード例 #1
0
        public void Connect()
        {
            if (client.IsAlive)
            {
                Debug.LogWarning("Stomp client already connected");
                return;
            }
            client.Connect();
            Debug.Log("Websocket connected");

            var msg = new StompFrame(ClientCommand.CONNECT);

            msg.AddHead("accept-version", acceptVersion);
            msg.AddHead("heart-beat", heartBeat);

            client.Send(msg.ToString());

            client.OnMessage += (sender, e) => Distributer(e.Data);
        }
コード例 #2
0
        private void Distributer(string msg)
        {
            StompFrame stomp = new StompFrame(msg);

            if (autoLog)
            {
                switch (stomp.GetServerCommand())
                {
                case ServerCommand.CONNECTED:
                case ServerCommand.MESSAGE:
                    Debug.Log("===> " + msg);
                    break;

                case ServerCommand.ERROR:
                    Debug.LogWarning("===> " + msg);
                    break;

                case ServerCommand.RECEIPT:
                    break;

                default:
                    break;
                }
            }

            if (stomp.GetServerCommand() == ServerCommand.MESSAGE)
            {
                ReceiveMessage receive = JsonConvert.DeserializeObject <ReceiveMessage>(stomp.data);

                if (autoCallBackDict.TryGetValue(receive.type, out WebCallBack webCallBack))
                {
                    webCallBack(true, receive.sender, receive.content);
                }
                else if (subscribes.TryGetValue(stomp.GetHead("destination"), out OnMessageHandler onMessageHandler))
                {
                    onMessageHandler(stomp.data);
                }
                else
                {
                    Debug.LogError("Received from unsubscribe dst " + stomp.GetHead("destination"));
                }
            }
        }