Пример #1
0
        private static void Consumer_Listener(IMessage message, TextMessageHandler messageHandler)
        {
            if (message is ActiveMQTextMessage && messageHandler != null)
            {
                ActiveMQTextMessage actualMessage = (ActiveMQTextMessage)message;

                messageHandler(actualMessage.Text, message);
            }
        }
Пример #2
0
        public static void ConfigureListener(ref MessageConsumer consumer, TextMessageHandler handler)
        {
            consumer.Stop();

            consumer.ConsumerInfo.Retroactive = false;
            consumer.Listener += (message) => Consumer_Listener(message, handler);

            consumer.Start();
        }
Пример #3
0
        /// <summary>
        /// 解析消息并执行相应逻辑
        /// </summary>
        /// <param name="msgStr">微信post过来的消息数据,xml格式</param>
        /// <returns>回复给用户的消息,将使用客服接口进行回复</returns>
        /// <exception cref="NotSupportedException"></exception>
        public static string ParseAndExecute(string msgStr)
        {
            var msgbase = Xml.Net.XmlConvert.DeserializeObject <MessageBase>(msgStr);


            IWxMsgHandler handler;


            switch (msgbase.MsgType)
            {
            case "text":
                // 文本消息
                handler = new TextMessageHandler( );
                break;

            case "image":
                // 图片消息
                handler = new ImageMessageHandler( );
                break;

            case "voice":
                // 语言消息
                handler = new VoiceMessageHandler( );
                break;

            case "video":
                // 视频消息
                handler = new VideoMessageHandler( );
                break;

            case "shortvideo":
                // 小视频消息
                handler = new ShortVideoMessageHandler( );
                break;

            case "location":
                // 地理位置消息
                handler = new LocationMessageHandler( );
                break;

            case "link":
                // 链接消息
                handler = new LinkMessageHandler( );
                break;

            case "event":
                // 事件
                return(ParseEvent(msgStr));

            default:
                throw new System.NotSupportedException("不支持的消息类型: " + msgbase.MsgType);
            }

            return(handler.Handle(msgStr));
        }
    public void Trigger(TextMessageHandler messageHandler = null)
    {
        if(messageHandler != null && m_Subtitles != null )
        {
            if (m_Line != null)
                m_Time = m_Line.length;
            if(m_Time > 0)
                messageHandler.Dialog(m_Subtitles, m_Time);
        }

        if (m_Source != null && m_Line != null)
        {
            m_Source.clip = m_Line;
            m_Source.Play();
        }
    }
Пример #5
0
        public void Write(string text)
        {
            if (_mainForm == null)
            {
                return;
            }

            if (_mainForm.InvokeRequired)
            {
                TextMessageHandler handler = new TextMessageHandler(
                    _mainForm.ProgressText);

                _mainForm.Invoke(handler, new object[] { text });
            }
            else
            {
                _mainForm.ProgressText(text);
            }
        }
        async void BeginReceiveMessages()
        {
            isReceiving = true;

            while (isReceiving && client.State == WebSocketState.Open)
            {
                WebSocketReceiveResult receiveResult = null;

                using (var ms = new MemoryStream())
                {
                    do
                    {
                        receiveResult = await client.ReceiveAsync(clientBuffer, CancellationToken.None);

                        ms.Write(clientBuffer.Array, clientBuffer.Offset, receiveResult.Count);
                    }while (!receiveResult.EndOfMessage);

                    ms.Seek(0, SeekOrigin.Begin);

                    // close socket if requested by server, return
                    if (receiveResult.MessageType == WebSocketMessageType.Close)
                    {
                        await CloseSocket(receiveResult.CloseStatusDescription);

                        return;
                    }

                    if (receiveResult.MessageType == WebSocketMessageType.Binary)
                    {
                        BinaryMessageHandler?.OnMessageReceived(ms);
                    }
                    else if (receiveResult.MessageType == WebSocketMessageType.Text)
                    {
                        TextMessageHandler?.OnMessageReceived(ms);
                    }
                }
            }
        }
Пример #7
0
 public void Add(TextMessageHandlerCondition condition, TextMessageHandler handler)
 => Add(new BotCommand {
     Condition = condition, Handler = handler
 });