京东价格监控软件开发技术探讨十五:通过酷Q和ZeroMQ实现推送变价变库消息到QQ群

在对该需求展开进行说明前,我们需要先了解几个基本名词。

1、酷Q是什么?

简单来说,酷Q是一个QQ机器人软件,能在QQ群里回答、发布信息。相关的机器人软件比较多,如QQLight、

2、ZeroMQ是什么?

简单来说,ZeroMQ是一个网络层的数据通信组件,支持TCP或UDP发送数据。具体到C#,有一个NetMQ的组件,简单好用。

酷Q的使用就不多说了,可以加入酷Q官网或者相关技术群进行学习。

NetMQ的使用非常简单,我们需要创建一个服务端和一个客户端。服务端接收数据,客户端发送数据。

第一步:引用两个类库,AsyncIO和NetMQ,可直接在NuGet下载。

第二步:创建服务端,通过While(true)保持监听

using (NetMQSocket serverSocket = new ResponseSocket())
{
    serverSocket.Bind("tcp://127.0.0.1:5555");
    while (true)
    {
        string message1 = serverSocket.ReceiveFrameString();
        Console.WriteLine("Receive message :\r\n{0}\r\n", message1);
        string[] msg = message1.Split(':');
        string message = msg[1];

        serverSocket.SendFrame(message);
        if (message == "exit")
        {
            break;
        }
    }
}

第三步:创建客户端

 using (NetMQSocket clientSocket = new RequestSocket())
 {
    clientSocket.Connect("tcp://127.0.0.1:5555");
    string message = "Hello";
    clientSocket.SendFrame(num + ":" + message);

    string answer = clientSocket.ReceiveFrameString();
    Console.WriteLine("Answer from server:{0}", answer);
 }

 需要特别注意的是,客户端必须接收服务端的回馈信息,否则会报异常。

上面三步就已经搭建起了基本的NetMQ通信框架。现在我们将这段代码移植到酷Q插件中去。

在插件加载的事件中,将酷QAPI的对象存储下来,然后创建一个NetMQHelper类,在该类的Push(方法名称随意)事件中,编写如下代码。

Task.Factory.StartNew(() =>
                {
                    using (this.Socket = new ResponseSocket($"@tcp://{Common.NetMQSrv}:{Common.ZeroMqPort}"))
                    {
                        BEnable = true;
                        while (BEnable)
                        {
                            //log.Info("ZeroMQ", "Execing");
                            string msg = this.Socket.ReceiveFrameString();
                            if (!string.IsNullOrEmpty(msg))
                            {
                                //log.Info("ZeroMQ", msg);
                                File.AppendAllText($@"{Common.RunDirectory}/Logs/NetMQ.log", $"{DateTime.Now} 收到 {msg}\r\n");
                                if (OnMessage != null)
                                {
                                    OnMessage(msg);
                                }

                            }
                            Socket.SendFrame(msg);
                            //Console.WriteLine("进行 线程" + Thread.CurrentThread.ManagedThreadId);
                        }
                    }
                }, TaskCreationOptions.LongRunning);

其中的OnMessage是一个代理事件,当通过NetMQ接收到数据后,可通过OnMessage和其它业务关联起来进行业务处理,比如调用酷Q的群消息推送。

操作原理就是这样了,赶紧去试试,不明白的可以加群一起讨论。在此说明下,插件的开发是使用的Native.SDK开发框架,在网上搜搜,此处就略过不表。

杀京东 做最走心的电商舆情监控平台 免费开源的价格监控软件 欢迎加入QQ群415014949一起讨论

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值